JavaScript - setInterval - clearInterval

   
Vista:

setInterval - clearInterval

Publicado por Fran (1 intervención) el 22/08/2009 20:49:45
Hola a tod@s.

estoy utilizando las funciones setInterval y clearInterval para activar y desactivar de forma asincrona un timer que llama a una función. La declaración inicial del timer como glogal

var intervalo = setInterval(call_function(),5000);
<form>
<input type="button" value="Activa timer" onClick="javascript:var intervalo = setInterval("fu()", 400);">
<input type="button" value="Detener " onClick="javascript:clearInterval(intervalo);">
</form>

El timer esta en marcha y cada 400 mseg. llama a la función correctamente, pulsamos el botón "Detener" y lo detiene, pulsamos el botón "Activar timer" y lo activa de nuevo, pero cuando intento pararlo de nuevo no hay forma ¿Habéis tenido alguna situación parecida ? Gracias y saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:setInterval - clearInterval

Publicado por k4n0o3 (1 intervención) el 06/08/2010 01:25:31
Ya paso mucho tiempo, pero por si alguien lo ocupa, el problema es que dentro de activar timer declaras otra variable llamada intervalo y esa se queda en el ambito local digamoslo asi, al iniciar la primera vez esta correcto, al detenerlo detienes correctamente la variable, y al asignarlo de nuevo arranca pero ahora ese intervalo ya no pertenece a la primer variable intervalo sino a la que tienes en el evento onclick y por ende no la detiene. prueba haciendo

onClick="javascript: intervalo = setInterval("fu()", 400);"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

setInterval - clearInterval

Publicado por Henry (1 intervención) el 26/04/2014 08:24:30
En mi caso funcionó así:

en la primera ocasión definiendo la variable:
var reloj = setInterval(mostrarhora, 1000);

Después se deshabilita por alguna razón

Y luego se vuelve a habilitar:

reloj = setInterval(mostrarhora, 1000);

Pero sin definir la variable, es decir sin utilizar var

De esa manera se está utilizando la definición inicial, no una nueva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar