112 votes

comment arrêter "setInterval"

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

Supposons que j'ai textarea . Je souhaite arrêter setInterval sur la mise au point et redémarrer setInterval sur le flou (avec jQuery).

181voto

CMS Points 315406

Vous devez enregistrer l' ID de minuterie de l'intervalle lorsque vous le démarrez. Vous utiliserez cette valeur ultérieurement pour l'arrêter, à l'aide de la fonction clearInterval :

 $(function () {
  var timerId = 0;

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

  $('textarea').blur(function () {
    clearInterval(timerId);
  });

});
 

28voto

SDG Points 71

Ceci est basé sur la réponse de CMS. La question demandait que le minuteur soit redémarré sur le flou et arrêté sur le focus, je l'ai donc déplacé un peu:

 $(function () {
  var timerId = 0;

  $('textarea').focus(function () {
    clearInterval(timerId);
  });

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

19voto

Doug Neiner Points 34940

Stockez le retour de setInterval dans une variable et utilisez-la 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
    }
});
 

12voto

Roy Tang Points 2077

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X