Foros del Web » Programando para Internet » Javascript »

OnMouseOut: El eterno problema

Estas en el tema de OnMouseOut: El eterno problema en el foro de Javascript en Foros del Web. Buenas a todos!. Vereis, tengo un problemilla, que ya he visto varias veces, incluido por este foro, pero ninguna respuesta me ayuda. El problema es ...
  #1 (permalink)  
Antiguo 25/10/2009, 07:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 5
Antigüedad: 15 años, 6 meses
Puntos: 0
OnMouseOut: El eterno problema

Buenas a todos!.

Vereis, tengo un problemilla, que ya he visto varias veces, incluido por este foro, pero ninguna respuesta me ayuda.

El problema es simple:

Cita:
<ul>
<li><a href="#">Informacion</a>
<ul>
<li><a href="#">De la Web</a><li>
<li><a href="#">Del foro</a><li>
<li><a href="#">Acerca de</a><li>
</ul>
</li>
</ul>
Bien, como podeis observar, dentro de una etiqueta <li> tengo otra <ul> con sus respectivas etiquetas.

El caso es que en la etiqueta <li> principal (esta en rojo), tengo un evento OnMouseOver y otro OnMouseOut.

Cuando pongo el raton sobre <li>, se despliega con efecto y tal la etiqueta ul (es un menu desplegable).

Pero cuando posiciono el raton sobre cualquiera de las siguientes etiquetas, a pesar de estar dentro del <li> principal, me lo toma como OnMouseOut y me cierra el menu.

¿Que solucion puedo darle a esto?

¿Quizas tendria que comprobar si es hijo de tal o de cual?¿Como?

Salu2 y gracias!!
  #2 (permalink)  
Antiguo 25/10/2009, 08:24
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: OnMouseOut: El eterno problema

Cita:
Iniciado por lalcey Ver Mensaje

¿Quizas tendria que comprobar si es hijo de tal o de cual?¿Como?
Exacto. Fijate en este enlace, en el cual se explica el problema y se muestra cómo solucionarlo: http://kusor.net/traducciones/brainj...vents5.es.html
  #3 (permalink)  
Antiguo 25/10/2009, 08:25
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: OnMouseOut: El eterno problema

a ver si este tema te ayuda, http://www.forosdelweb.com/f13/onmou...e-loco-732519/. aunque en este caso habla sobre DIV y SPAN, sigue siendo valido para tu caso.

edit @ 9:26,
ehh se me adelantaron, pero igual dejo el mensaje por si te ayuda...

@Panino, saludos
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 25/10/2009, 12:39
 
Fecha de Ingreso: octubre-2008
Mensajes: 5
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: OnMouseOut: El eterno problema

Muchas gracias a los dos!.

Panino5001, interesantisimo el articulo, he aprendido bastante leyendolo, pero no consigo aplicarlo a la forma en que hago esto.

He sacado un ejemplo de como lo hago, para ponerlo por aqui:

Código javascript:
Ver original
  1. Elemento = function(id,altura){
  2.   var thislocal = this;
  3.   var Tmp, Tmp2;
  4.  
  5.   this.id = id;
  6.   this.altura=altura;
  7.  
  8.   document.getElementById(id).onmouseover= function(){thislocal.Desplegar()};
  9.   document.getElementById(id).onmouseout= function(){thislocal.Plegar()};
  10. }
  11.  
  12. Elemento.prototype.Desplegar = function(){
  13.   var obj = document.getElementById(this.id);
  14.   var thislocal= this;
  15.  
  16.   if (this.altura<195){
  17.     this.altura+=10;
  18.     this.Tmp=setInterval(function(){thislocal.Desplegar()},25);
  19.   }else{
  20.     clearInterval(this.Tmp)
  21.   }
  22.  
  23.    obj.style.height=this.altura;
  24. }
  25.  
  26. Elemento.prototype.Plegar = function(){
  27.   var obj = document.getElementById(this.id);
  28.   var thislocal= this;
  29.  
  30.   if (this.altura>30){
  31.     this.altura-=10;
  32.     this.Tmp2=setInterval(function(){thislocal.Plegar()},25);
  33.   }else{
  34.     clearInterval(this.Tmp2)
  35.   }
  36.  
  37.    obj.style.height=this.altura;
  38. }
  39.  
  40. var E = new Elemento('DSubMenu',30);

Y el codigo HTML:

Código html:
Ver original
  1. <div id="DPrincipal" style="overflow:hidden;height:200px;width:150px;">
  2.   <div id="DSubMenu" style="overflow:hidden;height:30px;width:135px;border: 1px solid;">
  3.     <center>Info</center>
  4.     <br><br>
  5.     <a href="#">Informacion1</a><br>
  6.     <a href="#">Informacion2</a><br>
  7.     <a href="#">Informacion3</a><br>
  8.     <a href="#">Informacion4</a>
  9.   </div>
  10. </div>

(Esto es un simple ejemplo de la forma que utilizo para hacer esto).

El problema esta, a la hora de meter las funciones Desplegar() y Plegar(), si lo hago sin estas funciones, haciendo que el efecto sea directo, no tengo estos problemas.

¿Alguna forma de interpretarlo?

Salu2!
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 12:16.