web-dev-qa-db-ja.com

「setInterval」を停止する方法

setIntervalを停止および開始するにはどうすればよいですか?

textareaがあるとします。フォーカスでsetIntervalを停止し、ぼかしで(jQueryを使用して)setIntervalを再起動します。

102
testkhan

間隔を開始するときに、間隔のタイマーIDを保存する必要があります。後でこの値を使用して、 clearInterval 関数:

$(function () {
  var timerId = 0;

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

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

});
170
CMS

これは、CMSの回答に基づいています。質問は、ぼかしでタイマーを再起動し、フォーカスで停止するように要求したので、少し動かしました:

$(function () {
  var timerId = 0;

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

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

setIntervalの戻り値を変数に格納し、後でそれを使用して間隔をクリアします。

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

setIntervalは、clearInterval()で間隔をキャンセルするために使用できるIDを返します

11
Roy Tang