Foros del Web » Programando para Internet » Javascript »

Ocultar capa pasado un tiempo

Estas en el tema de Ocultar capa pasado un tiempo en el foro de Javascript en Foros del Web. Estoy haciendo un menú desplegable y quiero que el menú inferior no se oculte hasta pasado "x" tiempo desde que se saca el cursor del ...
  #1 (permalink)  
Antiguo 16/02/2008, 12:20
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Ocultar capa pasado un tiempo

Estoy haciendo un menú desplegable y quiero que el menú inferior no se oculte hasta pasado "x" tiempo desde que se saca el cursor del menu superior.

Lo tengo hecho así:

Javascript:

Código HTML:
<script type="text/javascript">
  function oculta (kpa) {
   var capa = document.getElementById(kpa);
   setTimeout('capa.style.visibility="hidden"',2000);
}
function muestra (kpa) {
   document.getElementById(kpa).style.visibility="visible";
}
</script> 
Diseño de menu's

Código HTML:
<div id="menu1">
  <table width="800" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCC99">
    <tr>
      <td align="center">INICIO</td>
      <td align="center" onmouseover="muestra('menu2')" onmouseout="oculta('menu2')">CATEGORIAS</td>
      <td align="center">MIS THEMES </td>
      <td align="center">ENVIAR THEME </td>
      <td align="center">BUSQUEDA</td>
      <td align="center">FORO</td>
      <td height="30" align="center">CONTACTO</td>
    </tr>
  </table>
</div>
<div id="menu2" style="visibility:hidden">
<table width="800" border="0" cellpadding="0" cellspacing="0" bgcolor="#CC9966">
  <tr>
    <td align="center">SUB 1 </td>
    <td align="center">SUB2</td>
  </tr>
</table>
</div> 
El funcionamiento seria que al situarte en categorias mostrara el submenú (cosa que hace bien) y que al salir de él, el submenú tardara un tiempo en ocultarse. En lugar de eso, pasa el tiempo y el IE da el mensajito de error en la esquina inferior izquierda.

Si alguien ve donde puedo estar comentiendo el error será de agradecer

Gracias.
  #2 (permalink)  
Antiguo 16/02/2008, 16:57
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Ocultar capa pasado un tiempo

Prueba esto...
Código HTML:
<script type="text/javascript">
  function oculta (kpa) {
   var capa = document.getElementById(kpa);
   setTimeout("capa.style.display='none'",2000);
}
function muestra (kpa) {
   document.getElementById(kpa).style.display="block";
}
</script> 
Espero te funcione...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #3 (permalink)  
Antiguo 16/02/2008, 17:53
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Re: Ocultar capa pasado un tiempo

Nop, con este código ni tan solo se muestra al pasar por encima :/
  #4 (permalink)  
Antiguo 17/02/2008, 03:59
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Ocultar capa pasado un tiempo

Hola AbdelioR

Pon así el menú:

Código:
<td align="center" onmouseover="muestra('menu2')" onmouseout='setTimeout("oculta(\"menu2\")",2000)'>CATEGORIAS</td>
y la función:

Código:
  function oculta (kpa) {
   document.getElementById(kpa).style.visibility='hidden';
}
Saludos,
  #5 (permalink)  
Antiguo 17/02/2008, 06:49
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Re: Ocultar capa pasado un tiempo

Ahí si, funciona perfectamente. Gracias JavierB :)

Me he estado peleando un poco más con el asunto pero sigo sin conseguir el efecto deseado...

La idea es que al salir de categorias el submenú desaparezca, pero que si yo paso de categorias a situarme encima del submenú, este se quede y no se vaya.

Lo hago así:

Código HTML:
<script type="text/javascript">
   function oculta (kpa) {
   document.getElementById(kpa).style.visibility='hidden';
}
function muestra (kpa) {
  	document.getElementById(kpa).style.visibility='visible';
}
function muestra2 (kpa) {
  	if (document.getElementById(kpa).style.visibility=='visible') document.getElementById(kpa).style.visibility='visible';
}
</script> 

Código HTML:
<div id="menu1">
  <table width="800" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCC99">
    <tr>
      <td align="center">INICIO</td>
      <td align="center" onmouseover="muestra('menu2')" onmouseout='setTimeout("oculta(\"menu2\")",2000)'>CATEGORIAS</td>
      <td align="center">MIS THEMES </td>
      <td align="center">ENVIAR THEME </td>
      <td align="center">BUSQUEDA</td>
      <td align="center">FORO</td>
      <td height="30" align="center">CONTACTO</td>
    </tr>
  </table>
</div>
<div id="menu2" style="visibility:hidden" onmouseover="muestra2('menu2')">
<table width="800" border="0" cellpadding="0" cellspacing="0" bgcolor="#CC9966">
  <tr>
    <td align="center">SUB 1 </td>
    <td align="center">SUB2</td>
  </tr>
</table>
</div> 
El cambio en el diseño seria la llamada a "muestra2" al situarte encima de la division del submenú, pero pasan 2 segundos y se oculta igual :/

EDIT: Bellenger lo he probado y no va :S
||
V

Última edición por AbdelioR; 17/02/2008 a las 12:05
  #6 (permalink)  
Antiguo 17/02/2008, 12:01
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Ocultar capa pasado un tiempo

Claro que funciona, solo tenias que adapatarlo con el retardo de tiempo, en fin...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #7 (permalink)  
Antiguo 18/02/2008, 12:13
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Re: Ocultar capa pasado un tiempo

Nadie me puede hechar un cable? :p
  #8 (permalink)  
Antiguo 05/02/2009, 18:55
 
Fecha de Ingreso: febrero-2009
Mensajes: 7
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ocultar capa pasado un tiempo

Mas Abajo les dejo un codigo que funciona pero sin el "settimeout"

Última edición por Rafael-FM; 06/02/2009 a las 08:00 Razón: mejorar
  #9 (permalink)  
Antiguo 06/02/2009, 07:59
 
Fecha de Ingreso: febrero-2009
Mensajes: 7
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ocultar capa pasado un tiempo

Código:
<html>
<head>
<title>MOSTRAR OCULTAR CAPAS CON EL MOUSE</title>
<script type="text/javascript">
function muestra (abc) {
document.getElementById(abc).style.visibility="visible";}
function oculta (abc){
document.getElementById(abc).style.visibility='hidden';}
</script>
</head>
<body>
<div id="menu1">
<table width="800" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCC99">
  <tr>
<td align="center">INICIO</td>
<td align="center" onmouseover="muestra('menu2')" onmouseout="oculta('menu')">CATEGORIAS</td>
<td align="center">MIS THEMES 
  </td>
<td align="center">ENVIAR THEME </td>
<td align="center">BUSQUEDA</td>
<td align="center">FORO</td>
<td height="30" align="center">CONTACTO</td>
</tr>
</table>
</div>
<div id="menu2" style="visibility:hidden; width: 801px;">
<table width="800" border="0" cellpadding="0" cellspacing="0" bgcolor="#CC9966">
<tr>
<td align="center" onmouseover="muestra('menu2')" onmouseout="oculta('menu2')">SUB1<a href="http://www.www.www">SUB2</a> </td>
<td align="center" onmouseover="muestra('menu2')" onmouseout="oculta('menu2')">SUB2<a href="http://www.www.www">SUB2</a> </td>
</tr>
</table>
</div>
</body>
</html>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:55.