0

我得到了这个函数,它每秒被 setInterval 触发

function updatetimer() {
    if (timesec==0) {
        if (timemin==0) clearInterval(interval);
        else {
            timemin--;
            timesec=59;
        }
    }
    else timesec--;

    document.getElementById('timeleft').innerHTML=timemin+':'+timesec;
}

您希望它每秒用新时间更新名为 timeleft 的 innerHTML 的元素。但由于某种原因,它没有,或者有时它没有。它可能与所有其他编码有关,因为有很多 setTimeout 和 DOM-stuff 正在进行。

如果这是假定的行为,请您指出另一种方法。

提前致谢, Locercus

4

1 回答 1

0

setTimeout使用和的事件调度setInterval是一种尽力而为的模型。如果您安排一个间隔以每 1000 毫秒运行一次,如果有其他事件正在处理,它可能会运行得更晚。

这就是为什么使用每秒触发的时钟通常是一个坏主意的原因。setInterval你的时钟总是很慢。

于 2013-04-23T10:23:51.177 回答