2013-03-04 47 views
0

这个setTimeout函数只运行一次然后停止。我没有错误,所以我不知道为什么会发生。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

counter = setTimeout(timer,100);是首选语法 – 2013-03-04 22:28:12

回答

0

是的,这就是setTimeout所做的。它运行一次代码。

您想要使用setInterval方法重复运行代码。

0

setTimeout正常工作,但它是不是你在找什么。改为尝试setIntervalsetInteval(function, delay)

0

setTimeout() - 在等待指定的毫秒数后执行函数一次

您可能想要去setInterval(),它会以指定的时间间隔重复执行一个函数。

1

您应该使用重复函数调用的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; 
} 
0

不知道你想要什么来实现的,我不明白$(“#复位”)。单击(等)的结构。这些JQuery?

但是,为什么不使用setInterval()?然后在满足条件时清除间隔计时器?