好的,所以页面上有一个按钮,我正在尝试更改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问题。
答案 0 :(得分:3)
你的问题在于这一行:
setTimeout(countdown(e),1000);
countdown(e)
是对倒计时函数的调用,返回void。 setTimeout函数接受函数引用和超时,因此您需要将其更改为:
setTimeout(countdown, 1000);
您当前的代码是递归调用倒计时(e)15次,然后是setTimeout(void,1000);
如果需要setTimeout将参数(如e
)传递给函数,则可以在超时后使用可选参数。
setTimeout(countdown, 1000, e);