我正在做this try it yourself on W3Schools:
<!DOCTYPE html>
<html>
<body>
<button onclick="startCount()">Start count!</button>
<input type="text" id="txt">
<button onclick="stopCount()">Stop count!</button>
<p>
Click on the "Start count!" button above to start the timer. The input field will count forever, starting at 0. Click on the "Stop count!" button to stop the counting. Click on the "Start count!" button to start the timer again.
</p>
<script>
var c = 0;
var t;
var timer_is_on = 0;
function timedCount() {
document.getElementById("txt").value = c;
c = c + 1;
t = setTimeout(function(){ timedCount() }, 1000);
}
function startCount() {
if (!timer_is_on) {
timer_is_on = 1;
timedCount();
}
}
function stopCount() {
clearTimeout(t);
timer_is_on = 0;
}
</script>
</body>
</html>
我注意到我之前有一个我从未问过的问题
在本教程中,timedCount()一直在调用自身,它永远不会停止。 显然。单击“停止”时,递归停止
请指出我的关键。
我认为该程序应该永远运行,这意味着它不会通过按钮接受任何驱动事件
感谢。
答案 0 :(得分:0)
它实际上并不是“永远运行”,它只是一种看待它的方式。实际上,它会重新安排自己在1000毫秒内再次运行。
但是当点击按钮时,会调用stopCount
,这会丢弃当前的重新安排(clearTimeout(t);
)