首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UserScript计时器错误

UserScript计时器错误
EN

Stack Overflow用户
提问于 2012-01-14 15:27:07
回答 1查看 186关注 0票数 1

好的,在一个页面上有一个按钮,我正在尝试更改它的文本,以便在Javascript中进行倒计时。我刚接触这门语言(2天),不确定我的代码出了什么问题。它不是等待整整一秒才再次迭代,而是立即重新迭代。

代码语言:javascript
复制
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的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-14 15:39:08

您的问题出在下面这一行:

代码语言:javascript
复制
setTimeout(countdown(e),1000);

countdown(e)是对countdown函数的调用,它返回空。setTimeout函数接受函数引用和超时,因此需要将其更改为:

代码语言:javascript
复制
setTimeout(countdown, 1000);

您当前的代码是递归地调用countdown(e) 15次,然后调用setTimeout(void,1000);

如果需要setTimeout将参数(如e)传递给函数,则可以在超时后使用可选参数。

代码语言:javascript
复制
setTimeout(countdown, 1000, e);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8860815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档