好的,在一个页面上有一个按钮,我正在尝试更改它的文本,以便在Javascript中进行倒计时。我刚接触这门语言(2天),不确定我的代码出了什么问题。它不是等待整整一秒才再次迭代,而是立即重新迭代。
var c = 15;
function countDown(e){
if (c!=0){
e.value = 'Reply (' + c + ')';
c--;
setTimeout(countdown(e),1000);
}
else{
e.value = 'Reply'}
}
}但是它似乎没有像我假设的那样需要15秒,而是一次触发(通过我在if语句中添加一个alert('a');来证明,我可以看到按钮文本的变化)。
我不确定这是Greasemonkey的问题还是我的javascript的问题。
发布于 2012-01-14 15:39:08
您的问题出在下面这一行:
setTimeout(countdown(e),1000);countdown(e)是对countdown函数的调用,它返回空。setTimeout函数接受函数引用和超时,因此需要将其更改为:
setTimeout(countdown, 1000);您当前的代码是递归地调用countdown(e) 15次,然后调用setTimeout(void,1000);
如果需要setTimeout将参数(如e)传递给函数,则可以在超时后使用可选参数。
setTimeout(countdown, 1000, e);https://stackoverflow.com/questions/8860815
复制相似问题