我有一个问题:当我在JavaScript中倒数时,我有一个函数:
<script>
var interval;
var minutes = 1;
var seconds = 5;
window.onload = function() {
countdown('countdown');
}
function countdown(element) {
interval = setInterval(function() {
var el = document.getElementById(element);
if(seconds == 0) {
if(minutes == 0) {
el.innerHTML = "countdown's over!";
clearInterval(interval);
return;
} else {
minutes--;
seconds = 60;
}
}
if(minutes > 0) {
var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
} else {
var minute_text = '';
}
var second_text = seconds > 1 ? 'seconds' : 'second';
el.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + ' remaining';
seconds--;
}, 1000);
}
</script>
每个功能执行之间的时间恰好是1秒。或者由于执行功能而导致时间延迟?
答案 0 :(得分:1)
不,setTimeout()
和setInterval()
具有不可预测的准确性,如this other question中所述,您可以通过设置超时一次而不是使用(new Date()).milliseconds
来做与时间相关的更高精度行动而不是setTimeout()
用于每件事
答案 1 :(得分:0)
有些函数setTimeout(fnc, delay)
和setTimeout(fnc, delay)
据称在至少 fnc
ms之后调用delay
。有关详细信息,请参阅MDN。