我有这个循环可以正常工作:
function countdown(counter) {
x = counter;
if (x > 0) {
x--;
alert(x + "/5");
if (x > 0) {
setTimeout(function () {
countdown(x);
}, 500);
}
}
};
countdown(6);
但是我希望能够杀死它,然后按一下按钮再次启动它。我想重新启动循环,无论按下按钮时它是什么号码。
在过去的几个小时里,我无处可去。
这是一个jsfiddle:http://jsfiddle.net/4vtPH/4/
答案 0 :(得分:6)
您可以使用clearTimeout
(documentation)
var timeout;
function countdown(counter) {
x = counter;
if (x > 0) {
x--;
alert(x + "/5");
if (x > 0) {
timeout = setTimeout(function () {
countdown(x);
}, 2000);
}
}
};
$('input').click(function() {
clearTimeout(timeout);
countdown(6);
});
countdown(6);
答案 1 :(得分:0)
你应该看看the documentation for setTimeout
。
它返回超时ID ,您可以使用clearTimeout
进行重置。
答案 2 :(得分:0)
首先,您需要将setTimeout分配给变量。
var timeout = setTimeout(..
然后在需要时您可以使用clearTimeout(timeout)
。确保您的超时变量的范围可以在您需要访问它的任何地方访问它。
答案 3 :(得分:0)
如何使用间隔进行倒计时?这是另一种解决方案(DEMO):
function Countdown(counter) {
this.interval = 0;
this.x = counter;
console.log(this.x + "/"+counter);
this.start = function() {
var self = this;
this.interval = setInterval(function () {
self.x--;
console.log(self.x + "/"+counter);
if(self.x == 0) self.stop();
}, 2000);
};
this.stop = function() {
clearInterval(this.interval);
};
};
var c = new Countdown(7);
c.start();
var c2 = new Countdown(4);
c2.start();