问答详情
源自:8-6 取消计时器clearTimeout()

问下为什么左边的列子 ,在function外面还加了一个setTimeout(timedCount,1000); 加不加有什么区别

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
  var num=0,i;
  function timedCount(){
    document.getElementById('txt').value=num;
    num=num+1;
    i=setTimeout(timedCount,1000);
  }
    setTimeout(timedCount,1000);
  function stopCount(){
    clearTimeout(i);
  }
</script>
</head>
<body>
  <form>
    <input type="text" id="txt">
    <input type="button" value="Stop" onClick="stopCount()">
  </form>
</body>
</html>


提问者:慕前端7121920 2015-04-17 15:53

个回答

  • 闹小志
    2015-04-17 16:36:56
    已采纳

    1、这是在用setTimeOut来实现setInterval函数。两个函数的区别就是setTimeOut只执行一次,简单来说就是延迟1秒执行函数timedCount,且只执行一次。而setInterval则是每隔多少时间就执行一次函数,是循环的,如果不阻止就会一直执行下去。

    2、在你的代码中可以看到有两个function,函数是需要调用才可以用的,外边的那个setTimeOut就是在调用timedCount函数,而timedCount函数中又进行了一次自身的调用,说是递归你可能就会明白了。实际上外面的函数只调用了一次,可是函数内部又进行了对自身的调用,从而形成了循环。

    3、个人理解~~

  • 心语紫朦胧
    2016-04-14 18:50:06

    正在纠结,看到这个秒懂,感谢感谢

  • 学会坚持
    2015-04-17 16:21:49

    外边setTimeout(timedCount,1000); 这个只是初始化