为什么setTimeout函数永远执行?

时间:2012-12-24 14:08:26

标签: javascript

我读到了时间事件。我对setTimeout感到困惑:我在W3Schools上有一个例子,它每500毫秒运行一次。我读到setTimeout它只能运作一次。 link

<head>
  <script>
    function startTime() {
      var today=new Date();
      var h=today.getHours();
      var m=today.getMinutes();
      var s=today.getSeconds();
      document.getElementById('txt').innerHTML=h+":"+m+":"+s;
      setTimeout(function(){startTime()},500);
    }
  </script>
</head>
<body onload="startTime()">
  <div id="txt"></div>
</body>

2 个答案:

答案 0 :(得分:4)

该功能在内部重置定时器:

setTimeout(function(){startTime()},500);

每次运行时,它做的最后一件事就是安排另一次迭代。

答案 1 :(得分:0)

setTimeout函数只能工作一次。查看您的代码。 在startTime函数内,您将在500 ms内再次调用相同的函数。 如果你想让它只工作一次,不要递归调用它。 或者,如果您希望它重复一段时间,请改用setInterval。 此函数返回一个id,您可以随时停止它。