javascript - onclick 函数在第二个执行

标签 javascript html onclick setinterval

我有 3 个每秒增加特定值的函数。

比如

var timberinterval = setInterval(function() {
        timber = timber + timbermodifier;           
        document.getElementById('timber').innerText = Math.floor(timber);                   
 }, 1000);
var sulphurinterval = setInterval(function() {
        sulphur = sulphur + sulphurmodifier;           
        document.getElementById('sulphur').innerText = Math.floor(sulphur);                     
 }, 1000);
var goldinterval = setInterval(function() {
        gold = gold + goldmodifier;           
        document.getElementById('gold').innerText = Math.floor(gold);                   
 }, 1000);

这些功能由 3 个独立的按钮控制。如您所见,函数每秒增加一个修饰符。

用户并不总是点击准确的秒数,他们可能会在 0.5 秒或 0.8 秒时点击,然后我的功能开始不同步。

如何延迟函数执行,使其与其他函数同步?

最佳答案

获取当前毫秒数:

var d = new Date();
var milli = d.getMilliseconds();

然后您可以在 setTimeout 函数中调用 setInterval 函数:

setTimeout(function() { setInterval(function() { ... }, 1000); }, 1000-milli)

但是,如果您需要 setInterval 的返回值(例如清除间隔),我相信您将不得不使用 promises。

关于javascript - onclick 函数在第二个执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47221774/

相关文章:

javascript - 悬停时显示特定的向下滚动图标?

javascript - javascript代码可以判断浏览器是否在后台吗?

javascript - 简单的 jquery 对话框无法创建输入

Javascript 的点击

Javascript 在单击时更改文本,然后再次更改回来

Javascript .onclick = functionName 传递参数

javascript - 在 Three.js 中对线条的绘制进行动画处理

javascript - css flex - 最大化元素大小,同时保持它们填充不同大小的容器

javascript - Angular 2 给出错误 Uncaught SyntaxError : Unexpected token <

css - DIV 底部的中心图像