此setTimeout函数仅运行一次然后停止。我没有错误,所以我不知道为什么会这样。
count = 100;
counter = setTimeout('timer()', 100);
$('#reset').click(function() {
count = 100;
counter = setTimeout('timer()', 100);
})
function timer() {
if (count <= 0) {
clearTimeout(counter);
alert('done');
}
$('#counter').html(count);
count -= 1;
}
我尝试了一些setTimeout函数的不同表达式,包括setTimeout(timer(),100)
和setTimeout(function() { timer() }, 100)
答案 0 :(得分:2)
你应该使用setInterval()
重复一个函数调用,而不是setTimeout()
,它只执行一次。另外,请勿在函数名称引用中使用()
。
var count = 100;
var counter = setInterval('timer', 100);
$('#reset').click(function() {
count = 100;
counter = setInterval('timer', 100);
})
function timer() {
if (count <= 0) {
clearInterval(counter);
alert('done');
}
$('#counter').html(count);
count -= 1;
}
答案 1 :(得分:0)
setTimeout
正常工作但不是您要找的。请尝试setInterval
。 setInteval(function, delay)
答案 2 :(得分:0)
setTimeout()
- 在等待指定的毫秒数后执行一个一次的函数。
您可能希望以指定的时间间隔一次又一次地执行setInterval()
执行函数。
答案 3 :(得分:0)
是的,这就是setTimeout
的作用。它运行一次代码。
您希望使用setInterval
方法重复运行代码。
答案 4 :(得分:0)
不确定您要实现的目标,而且我不理解 $('#reset')。单击(等)构造。这些是JQuery吗?
但是,为什么不使用setInterval()?然后在满足条件时清除间隔计时器?
答案 5 :(得分:0)
var count = 10;
function counter() {
if ( count > 0 )
{
--count;
var t2 = setTimeout( counter, 1000 );
document.querySelector("#demo").innerHTML = count;
}
else
{
clearTimeout(t2);
document.querySelector("#demo").innerHTML = "Done";
}
}
var countdown_timeout = counter();
<p>Count: <b><span id="demo"></span></b></p>