<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。为什么会这样?
答案 0 :(得分:3)
setInterval
不是很精确。它唯一的保证是调用之间的时间大于或等于传递的间隔。在您的情况下,主要问题之一是最小间隔实际上指定为4毫秒。
您可以使用new Date().getTime()
(或Date.now()
,给定支持)获得完全准确的测量 - 这是以毫秒为单位,通常是您在做与测量时间有关的任何事情时应该使用的(甚至是大多数动画,只是因为它更简单)。
答案 1 :(得分:2)
为了扩展我在评论中所说的内容,这应该有效:
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毫秒,你的时间显示保持正确。