问题
How do I stop and start setInterval?
Suppose I have a textarea. I want to stop setInterval on focus and restart setInterval on blur (with jQuery).
回答1:
You have to store the timer id of the interval when you start it, you will use this value later to stop it, using the clearInterval function:
$(function () {
var timerId = 0;
$('textarea').focus(function () {
timerId = setInterval(function () {
// interval function body
}, 1000);
});
$('textarea').blur(function () {
clearInterval(timerId);
});
});
回答2:
This is based on CMS's answer. The question asked for the timer to be restarted on the blur and stopped on the focus, so I moved it around a little:
$(function () {
var timerId = 0;
$('textarea').focus(function () {
clearInterval(timerId);
});
$('textarea').blur(function () {
timerId = setInterval(function () {
//some code here
}, 1000);
});
});
回答3:
Store the return of setInterval in a variable, and use it later to clear the interval.
var timer = null;
$("textarea").blur(function(){
timer = window.setInterval(function(){ ... whatever ... }, 2000);
}).focus(function(){
if(timer){
window.clearInterval(timer);
timer = null
}
});
回答4:
setInterval returns an id that you can use to cancel the interval with clearInterval()
来源:https://stackoverflow.com/questions/1831152/how-to-stop-setinterval