【问题标题】:UserScript Timer Error用户脚本计时器错误
【发布时间】:2012-01-14 07:27:06
【问题描述】:

好的,页面上有一个按钮,我正在尝试更改其文本,以便在 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 的问题。

【问题讨论】:

  • 您可以 format your code 在每行前面加上四个空格或用反引号括起来。
  • 对不起,这是我第一次在这里发布代码。

标签: javascript greasemonkey userscripts


【解决方案1】:

你的问题在于这一行:

setTimeout(countdown(e),1000);

countdown(e) 是对返回 void 的倒计时函数的调用。 setTimeout 函数接受一个函数引用和一个超时,所以你需要把它改成:

setTimeout(countdown, 1000);

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

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

setTimeout(countdown, 1000, e);

【讨论】:

  • 对不起,我走神了。这非常有效,感谢您帮助这个新手。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多