Comment arrêter "setInterval"

Comment puis-je arrêter et démarrer setInterval ?

Supposons que j'ai une zone de textarea . Je souhaite arrêter setInterval sur focus et redémarrer setInterval sur flou (avec jQuery).

Vous devez mémoriser l' ID de la minuterie de l'intervalle lorsque vous lancer, vous utiliserez cette valeur plus tard pour l'arrêter, en utilisant la fonction clearInterval :

 $(function () { var timerId = 0; $('textarea').focus(function () { timerId = setInterval(function () { // interval function body }, 1000); }); $('textarea').blur(function () { clearInterval(timerId); }); }); 

Ceci est basé sur la réponse de CMS. La question a demandé que la minuterie soit redémarré sur le flou et s'est arrêtée sur le focus, alors je l'ai déplacé un peu:

 $(function () { var timerId = 0; $('textarea').focus(function () { clearInterval(timerId); }); $('textarea').blur(function () { timerId = setInterval(function () { //some code here }, 1000); }); }); 

Conservez le retour de setInterval dans une variable et utilisez-le plus tard pour effacer l'intervalle.

 var timer = null; $("textarea").blur(function(){ timer = window.setInterval(function(){ ... whatever ... }, 2000); }).focus(function(){ if(timer){ window.clearInterval(timer); timer = null } }); 

SetInterval renvoie un identifiant que vous pouvez utiliser pour annuler l'intervalle avec clearInterval ()