如何停止“setInterval”[重复]

问题描述 投票:98回答:4

这个问题在这里已有答案:

我如何停止并启动setInterval

假设我有一个textarea。我想在焦点上停止setInterval并在模糊时重启setInterval(使用jQuery)。

javascript jquery setinterval
4个回答
167
投票

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

$(function () {
  var timerId = 0;

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

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

});

24
投票

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

$(function () {
  var timerId = 0;

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

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

18
投票

setInterval的返回值存储在变量中,稍后使用它来清除间隔。

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

11
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.