Foros del Web » Programando para Internet » Javascript »

onmouseout se ejecuta aun sin quitar el mouse

Estas en el tema de onmouseout se ejecuta aun sin quitar el mouse en el foro de Javascript en Foros del Web. Buenas tardes, Nuevamente recurro a ustedes debido a que ya no se me ocurre el porque. Tengo este código el cual realiza un efecto de ...
  #1 (permalink)  
Antiguo 14/11/2011, 17:47
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Pregunta onmouseout se ejecuta aun sin quitar el mouse

Buenas tardes,

Nuevamente recurro a ustedes debido a que ya no se me ocurre el porque. Tengo este código el cual realiza un efecto de tamaño en un menu.

Código:
function aumentardiv(id)
{
	var div = document.getElementById('menu'+id);
	widthBMv = widthBMv + 1;
	var width_aux = div.style.width;
	width_aux = width_aux.substr(0,width_aux.length - 2);
        if(parseInt(width_aux) >= 350){
		div.style.width = '350px';
                clearInterval(tempoautD_aux);
                tempoautD_aux = '';
		return;
	}else{
	        width_aux = parseInt(width_aux) + parseInt(widthBMv);
	        div.style.width = width_aux + 'px';
	}
	tempoautD_aux = setTimeout("aumentardiv("+id+")",10);
}

function disminuirdiv(id)
{
	var div = document.getElementById('menu'+id);
	widthBMv = widthBMv - 1;
	var width_aux = div.style.width;
	width_aux = width_aux.substr(0,width_aux.length - 2);
	if(parseInt(width_aux) <= 238){
		div.style.width = '238px';
                clearInterval(tempoautD_aux);
                tempoautD_aux = '';
		return;
	}else{
                width_aux = parseInt(width_aux) + parseInt(widthBMv);
               div.style.width = width_aux + 'px';
	}
	tempoautD_aux = setTimeout("disminuirdiv("+id+")",10);
}
El código HTML de la etiqueta queda así:

Código HTML:
<div id='menu0' style='width: 238px;' onmouseover='javascript:aumentardiv(0)' onmouseout='javascript:disminuirdiv(0);'><span>Item 1</span></div> 
El problema esta en que si dejo el cursor del mouse en Item 1 las funciones de los eventos onmouseover y onmouseout se ejecutan una tras otra ciclicamente hasta que quite el cursor del Item1.

Lo raro es que si quito la etiqueta <span> las funciones se ejecutan de manera correcta.

Ahora si que como dice eugenio derbez, ¿Que alguien me explique? Por favor.

Saludos
  #2 (permalink)  
Antiguo 15/11/2011, 06:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: onmouseout se ejecuta aun sin quitar el mouse

Necesitas ese span?

Lo digo porque tal y como nos lo pasas no hace absolutamente nada....
Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4.  
  5. </head>
  6. <script language="JavaScript" type="text/JavaScript">
  7. var widthBMv=0;
  8. function aumentardiv(id)
  9. {
  10.     var div = document.getElementById('menu'+id);
  11.     widthBMv = widthBMv + 1;
  12.     var width_aux = div.style.width;
  13.     width_aux = width_aux.substr(0,width_aux.length - 2);
  14.         if(parseInt(width_aux) >= 350){
  15.         div.style.width = '350px';
  16.                 clearInterval(tempoautD_aux);
  17.                 tempoautD_aux = '';
  18.         return;
  19.     }else{
  20.             width_aux = parseInt(width_aux) + parseInt(widthBMv);
  21.             div.style.width = width_aux + 'px';
  22.     }
  23.     tempoautD_aux = setTimeout("aumentardiv("+id+")",10);
  24. }
  25.  
  26. function disminuirdiv(id)
  27. {
  28.     var div = document.getElementById('menu'+id);
  29.     widthBMv = widthBMv - 1;
  30.     var width_aux = div.style.width;
  31.     width_aux = width_aux.substr(0,width_aux.length - 2);
  32.     if(parseInt(width_aux) <= 238){
  33.         div.style.width = '238px';
  34.                clearInterval(tempoautD_aux);
  35.                tempoautD_aux = '';
  36.         return;
  37.     }else{
  38.                width_aux = parseInt(width_aux) + parseInt(widthBMv);
  39.               div.style.width = width_aux + 'px';
  40.     }
  41.     tempoautD_aux = setTimeout("disminuirdiv("+id+")",10);
  42. }</script>
  43.  
  44. <div id='menu0' style='width: 238px;background-color: #CC6666;' onmouseover='javascript:aumentardiv(0)' onmouseout='javascript:disminuirdiv(0);'>
  45. <span style=';background-color: #666666;'>Item 1</span>
  46. </div>
  47. </body>
  48. </html>

Aqui verás en colores distintos el div y el span.

He hecho esta prueba en fire y en ie y parece que funciona...

Solo se repiten los eventos cuando colocas el mouse en una zona de pantalla que entra y sale de del div en funcion de los cambios de tamaño que provoca el script pero tanto si tienes el span como si no lo tienes...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 15/11/2011, 13:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: onmouseout se ejecuta aun sin quitar el mouse

Gracias por la respuesta, el span lo necesitaba porque en la hoja de estilos tengo una clase para ese span. Y con otra funcion de javascript quito o pongo esa etiqueta.

Aun sigo sin saber porque sucede esto. Oh porque en mi maquina si sucede y en la de quimfv no. Por ahora lo solucione quitando el span y cambiando el estilo del div con la funcion de javascript.

Seguire investigando el porque y si logro dar con la respuesta la posteare para le conocimiento de todos.

Etiquetas: onmouseout
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 10:53.