Как остановить "setInterval"

Как остановить и запустить setInterval?

Предположим, что a textarea. Я хочу остановить setInterval на фокусе и перезапустить setInterval при размытии (с jQuery).

Ответ 1

Вы должны сохранить идентификатор таймера интервала при его запуске, вы будете использовать это значение позже, чтобы остановить его, используя clearInterval:

$(function () {
  var timerId = 0;

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

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

});

Ответ 2

Это основано на ответе CMS. Вопрос о том, чтобы таймер был перезапущен на размытие и остановился на фокусе, поэтому я немного переместил его:

$(function () {
  var timerId = 0;

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

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

Ответ 3

Сохраните возврат setInterval в переменной и используйте его позже, чтобы очистить интервал.

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

Ответ 4

setInterval возвращает идентификатор, который можно использовать для отмены интервала с помощью clearInterval()