2009-10-09 6 views

Respuesta

34

setTimeout() sólo se pondrá en marcha el comando una vez. En este caso, setInterval() es tu amigo.

var iFrequency = 5000; // expressed in miliseconds 
var myInterval = 0; 

// STARTS and Resets the loop if any 
function startLoop() { 
    if(myInterval > 0) clearInterval(myInterval); // stop 
    myInterval = setInterval("doSomething()", iFrequency); // run 
} 

function doSomething() 
{ 
    // (do something here) 
} 

de código ...

<input type="button" onclick="iFrequency+=1000; startLoop(); return false;" 
     value="Add 1 second more to the interval" /> 
+0

¿Cómo ajusto la frecuencia sobre la marcha? ¿Y qué código detendrá setInterval()? – steven

+0

Ok clearInterval lo detiene, pero ¿qué pasa con la frecuencia? – steven

+0

la frecuencia es el segundo argumento de la función. Ver el enlace al tutorial. – pixeline

2
+1

La última versión está disponible en el sitio jQuery Plugins. http://plugins.jquery.com/project/timers –

7

Uso

setInterval

llamadas una función repetidamente, con un retraso de tiempo fijo entre cada llamada a esa función.

para la acción repetida y

clearInterval

Cancela acción repetida que se estableció utilizando setInterval().

para detener ese

+0

Ok clearInterval lo detiene, pero ¿qué hay de cambiar la frecuencia? – steven

+0

Puede cambiar la demora en setInterval – rahul

+0

, pero ¿cómo puedo cambiar la frecuencia cuando el intervalo está en progreso? – steven

0
<script type="text/javascript"> 
var t; var timer_is_on=0; var timeout=5000; 

function timedCount() { 
    doSomeThing(); 
    t = setTimeout("timedCount()",timeout); 
} 

function doTimer() { 
    if (!timer_is_on) { 
    timer_is_on=1; 
    timedCount(); 
    } 
} 

function stopCount() { 
    clearTimeout(t); 
    timer_is_on=0; 
} 
function changeFreq() { 
    timeout = 2000; 
} 
</script> 
+0

nice. Cerrar, no cambia la frecuencia sobre la marcha, pero no estoy seguro si eso es posible ahora. – steven

Cuestiones relacionadas