以下のコードは、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);