Foros del Web » Programando para Internet » Jquery »

Animación con setInterval al hacer scroll que no para

Estas en el tema de Animación con setInterval al hacer scroll que no para en el foro de Jquery en Foros del Web. Saludos y feliz año. A ver si alguien me puede echar un cable. Estoy tratando de animar un objeto con desplazamiento de derecha a izquierda. ...
  #1 (permalink)  
Antiguo 02/01/2018, 07:04
 
Fecha de Ingreso: noviembre-2014
Ubicación: Madrid
Mensajes: 52
Antigüedad: 3 años, 2 meses
Puntos: 0
Animación con setInterval al hacer scroll que no para

Saludos y feliz año.
A ver si alguien me puede echar un cable.
Estoy tratando de animar un objeto con desplazamiento de derecha a izquierda. El objeto debe animarse continuamente cuando el scroll supera una cantidad determinada (trigger1) y debe parar cuando supere otra (fin).
Creo no es necesario poner el código html y los estilos.
El script es este:
Código:
$(document).ready(function(){
	var top_trigger = $('#trigger1').position().top;
	var top_cuadroazul = $('#cuadroazul').position().top;
	var distancia = top_cuadroazul - top_trigger;
	var top_stop = $('#stopanima').position().top;
	var fin = top_stop - top_trigger;
	var left_cuadroazul = parseInt($('#cuadroazul').css('left'));
	var wpos;
	var nosigas = 0;//limita el setinterval a una sola vez, no tantas como scrolles
	$(window).on('scroll', function(){
		wpos = $(window).scrollTop();
			if (wpos >= distancia && wpos < fin){
				if (nosigas == 0){
					nosigas = 1;
					var intervalo= null;
					intervalo = setInterval(function(){
						left_cuadroazul = -left_cuadroazul;
						$('#cuadroazul').animate({left: left_cuadroazul}, 1500, 'swing');
					}, 5);
				}
			}
			if(wpos >fin){
				clearInterval(intervalo);
				console.log('entro');
			}
	});
});
Al ver que no se paraba la animación, puse en el código html un botón con el clearinterval al clickar sobre él.
Tampoco lo hace y en la consola sale el mensaje:
intervalo is not defined

Gracias por adelantado.

PD: Cómo no sé si hay alguna norma que prohiba links externos, podéis ver la página en esta dirección:
http://dereprueba.web44.net/cuadro/index2w.html
  #2 (permalink)  
Antiguo 02/01/2018, 11:01
Avatar de Alexis88
Moderador
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.277
Antigüedad: 6 años, 2 meses
Puntos: 879
Respuesta: Animación con setInterval al hacer scroll que no para

Como la variable intervalo es declarada dentro de un bloque condicional, ese será el contexto en el que tendrá validez. En otras palabras, si no se cumple la condición if (nosigas == 0), no habrá variable intervalo que se pueda evaluar.

La recomendación sería que declares esa variable al inicio y asignándole un valor por defecto para que más adelante no ocurra este tipo de problemas.

__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #3 (permalink)  
Antiguo 05/01/2018, 05:06
 
Fecha de Ingreso: noviembre-2014
Ubicación: Madrid
Mensajes: 52
Antigüedad: 3 años, 2 meses
Puntos: 0
Respuesta: Animación con setInterval al hacer scroll que no para

Gracias por tu respuesta.
He puesto la variable intervalo con valor null al inicio. Sigue pasando lo mismo. Creo que el problema está en tratar que no haya una llamada al setinterval cada vez que se hace scroll con la variable nosigas. No se me ocurre como evitar repetidas llamadas al setinterval.



La zona horaria es GMT -6. Ahora son las 21:52.