gpt4 book ai didi

javascript - 为什么这个 javascript 计时器代码在 Chrome 调试器中可以工作,但在正常运行时却不能工作

转载 作者:行者123 更新时间:2023-11-28 02:29:50 25 4
gpt4 key购买 nike

下面的代码定期用新文本更新 div 元素。如果我在 Chrome 调试器中设置断点并以单步模式运行,代码将按我的预期更新 html。但如果在没有设置任何断点的情况下运行,我会看到:

分钟 = 0 秒 = 0

打印后没有任何变化。

我做错了什么?

<html>
<script type="text/javascript">
var g_t1 = null;
var g_t2 = null;

function StartTimer() {
g_t1 = new Date();
}

function StopTimer() {
g_t2 = new Date();
}

function CalcDuration() {
StopTimer();

var diff = g_t2.getTime() - g_t1.getTime();
var place = document.getElementById("here");
var minutes = Math.floor((diff / 1000) / 60);
var seconds = Math.floor((diff / 1000) % 60);
place.innerHTML = "minutes = " + minutes + " seconds = " + seconds;

window.setTimeout(CalcDuration(), 100);
}

function Poller() {
if(!g_t1)
StartTimer();

window.setTimeout(CalcDuration(), 100);
}

</script>
<body onload="Poller();">
<div id="here"></div>
</body>
</html>

编辑。

对于任何感兴趣的人来说,这两种变体都有效:

window.setTimeout(CalcDuration, 100);

window.setTimeout(function(){CalcDuration()}, 100);

最佳答案

您需要将计时器函数调用包装在匿名函数中,否则它将立即执行,而不是在计时器的范围内执行。

window.setTimeout(function(){CalcDuration()}, 100);

关于javascript - 为什么这个 javascript 计时器代码在 Chrome 调试器中可以工作,但在正常运行时却不能工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14401779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com