Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/04/2010, 06:50
Banditolane
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 1
Pregunta Problema con setTimeout (JS)

Buenas:

Estoy tratando de construir una botonera en JS, pero no quiero que se muestre sin estar seguro de que el usuario quiere hacerlo.
Para eso, pongo un setTimeoutl de unos 300ms o 500ms en forma de tiempo de seguridad. Y algo parecido pero con algo más de tiempo para cerrar la botonera. Bueno aquí ya surge el primer problema. Cuando pasa el ratón sobre la botonera, esta espera el tiempo indicado y se activa, a pesar de que uso la función clearTimeout[/B] en el mouseleave. Lo mismo pasa cuando dejo el tiempo de seguridad para que la botonera no se cierre demasiado pronto si el usuario quiere volver a ella. El caso es que tiene un setTimeout "automático" al cargar la página y este si que me permite detenerlo con el primer mouseenter. Este es el código:
Código:
function timeOut() {
	
	$('#botonera').animate({height:20}, "normal");
	$("#btn1").slideUp(700);
	$("#btn2").slideUp(700);
	$("#btn3").slideUp(700);
	$("#btn4").slideUp(700);
				
};
var wait = setTimeout(timeOut, 3000);
			
function timeOut1() {
				
	
	$("#botonera").animate({height:40}, "fast");
	$("#btn1").slideDown(300);
	$("#btn2").slideDown(300);
	$("#btn3").slideDown(300);
	$("#btn4").slideDown(300);
			
};
			
function mostrar() {
			
	$("i").show();
			
};
	
function ocultar() {
			
	$("i").hide();
			
};
			
$('#botonera').mouseenter( function() {
	
	clearTimeout(wait);			
	var wait1 = setTimeout(timeOut1, 500);
	var esp1 = setTimeout(ocultar, 100);
			
});
$('#botonera').mouseleave( function() {
	
	clearTimeout(wait1);			
	var wait = setTimeout(timeOut, 3000);
	var esp = setTimeout(mostrar, 3700);
			
});
He probado varias opciones, como por ejemplo hover y mouseover/mouseout, pero ninguna detiene el setTimeout. Si alguien sabe de qué forma podría conseguir lo que busco....
Soy bastante novato y suelo inventarme todo mi código, por lo que seguro que está lleno de errores de principiante... ¡¡Sé que escribo más de la cuenta!! jajaja

Gracias y un saludo!

Última edición por Banditolane; 04/04/2010 a las 06:57