如何停止"setInterval"

tes*_*han 103 javascript jquery setinterval

我该如何停下来开始setInterval

假设我有一个textarea.我想停止setInterval焦点并重新启动setInterval模糊(使用jQuery).

CMS*_*CMS 171

您必须在启动时存储间隔的计时器ID,稍后您将使用此值来停止它,使用以下clearInterval函数:

$(function () {
  var timerId = 0;

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

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

});
Run Code Online (Sandbox Code Playgroud)

  • 我建议在`timerId = setInterval`之前添加一个`if(timerId)clearInteral(timerId)`否则,如果焦点的调用比模糊更频繁,则无法保证间隔被清除.在测试时我看了几次这种情况(在IE10上). (6认同)

小智 25

这是基于CMS的答案.问题要求计时器重新启动模糊并停在焦点上,所以我把它移动了一下:

$(function () {
  var timerId = 0;

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

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


Dou*_*ner 18

setInterval将变量存储在变量中,稍后使用它来清除间隔.

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


Roy*_*ang 11

setInterval返回一个id,您可以使用它来取消clearInterval()的间隔