![](/img/trans.png)
[英]Why does setInterval not increment my clock properly in JavaScript?
[英]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.