setInterval
を停止および開始するにはどうすればよいですか?
textarea
があるとします。フォーカスでsetInterval
を停止し、ぼかしで(jQueryを使用して)setInterval
を再起動します。
間隔を開始するときに、間隔のタイマーIDを保存する必要があります。後でこの値を使用して、 clearInterval
関数:
$(function () {
var timerId = 0;
$('textarea').focus(function () {
timerId = setInterval(function () {
// interval function body
}, 1000);
});
$('textarea').blur(function () {
clearInterval(timerId);
});
});
これは、CMSの回答に基づいています。質問は、ぼかしでタイマーを再起動し、フォーカスで停止するように要求したので、少し動かしました:
$(function () {
var timerId = 0;
$('textarea').focus(function () {
clearInterval(timerId);
});
$('textarea').blur(function () {
timerId = setInterval(function () {
//some code here
}, 1000);
});
});
setInterval
の戻り値を変数に格納し、後でそれを使用して間隔をクリアします。
var timer = null;
$("textarea").blur(function(){
timer = window.setInterval(function(){ ... whatever ... }, 2000);
}).focus(function(){
if(timer){
window.clearInterval(timer);
timer = null
}
});
setIntervalは、clearInterval()で間隔をキャンセルするために使用できるIDを返します