2009-10-09 3 views

Répondre

34

setTimeout() ne lancer la commande une fois. Dans ce cas, setInterval() est votre ami.

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) 
} 

à partir du code ...

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

Comment régler la fréquence à la volée? Et quel code va arrêter setInterval()? – steven

+0

Ok clearInterval l'arrête, mais qu'en est-il de la fréquence? – steven

+0

la fréquence est le deuxième argument de la fonction. Voir le lien vers le tutoriel. – pixeline

2

Essayez jQuery Timers

+1

La nouvelle version est disponible sur le site jQuery Plugins. http://plugins.jquery.com/project/timers –

7

Utilisez

setInterval

Appels une fonction à plusieurs reprises, avec un délai fixe entre chaque appel à cette fonction.

à l'action répétée et

clearInterval

Annule action répétée qui a été créée à l'aide de setInterval().

pour arrêter que

+0

Ok clearInterval l'arrête, mais qu'en est-il de la modification de la fréquence? – steven

+0

Vous pouvez changer le délai dans le setInterval – rahul

+0

mais comment puis-je changer la fréquence quand l'intervalle est en cours? – 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

agréable. Fermer, ne change pas la fréquence à la volée mais je ne sais pas si c'est possible maintenant. – steven

Questions connexes