簡體   English   中英

為什么JavaScript中的setInterval無法正常工作

[英]Why the setInterval in javascript does not work properly

<html>
<head>
<script>

window.onload = function(){
    setTimeout(function(){

        alert("hi");    
    }, 4000);

    var time = 0;
    var para = document.getElementsByTagName("p");
    setInterval(function(){

        time += 1;

        para[0].innerHTML = time;

    },1);

}
</script>
</head>
<body>
<p></p>
</body>
</html>

這是我的代碼,我想計算警報顯示的時間,我希望它是4000,但是它僅在4秒后變為9xx。 為什么會這樣?

setInterval不是很精確。 它唯一保證的是兩次調用之間的時間大於或等於經過的間隔。 在您的情況下,主要問題之一是實際將最小間隔指定為4毫秒。

您可以使用new Date().getTime() (或Date.now() ,獲得支持)來獲得完全准確的測量結果-以毫秒為單位,通常是在進行與時間(甚至是時間)相關的測量時應使用的測量結果大多數動畫,只是因為它更簡單)。

為了擴展我在評論中所說的內容,這應該起作用:

setTimeout(function(){
    alert("hi");    
}, 4000);

var startTime = new Date();
var para = document.getElementsByTagName("p");
setInterval(function(){
    var timeElapsed = new Date() - startTime;
    para[0].innerHTML = timeElapsed;
},1);

現在,即使您不是每毫秒都進入一次,而是說每28毫秒一次,您的時間顯示仍然正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM