1

我有一个问题:当我在 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 秒。还是由于执行功能体而导致时间延迟?

4

2 回答 2

1

不,setTimeout()并且setInterval()具有不可预测的准确性,正如在另一个问题中所说,您可以通过设置一次超时来获得更好的精度,而不是使用(new Date()).milliseconds与时间相关的操作而不是使用setTimeout()每件事

于 2012-12-20T18:02:25.237 回答
0

有一些函数setTimeout(fnc, delay)据说至少在ms之后setTimeout(fnc, delay)调用。有关详细信息,请参阅MDNfnc delay

于 2012-12-20T18:01:05.000 回答