Как остановить "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()