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

我设置了开始按钮,两次点击开始按钮后没办法停止了,什么原因?

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
   function clock(){
      var time=new Date();                     
      document.getElementById("clock").value = time;
   }
    var int= setInterval(clock,1000);
    
      function state(){int=setInterval(clock,1000);}
       
       
     
</script>
</head>
<body>
  <form>
    <input type="text" id="clock" size="50"  />
    <input type="button" value="Stop" onclick="clearInterval(int)" />
    <input type="button" value="state" onclick="state()" />
  </form>
</body>
</html>

提问者:好笑 2016-03-02 17:28

个回答

  • 阿飘u
    2016-03-07 20:53:31

    对不起· 我修正一下我的回复~   还有就是  并不是因为你多设置了一个setInterval  而是因为你连续点击两次就产生了两个。clearInterval一次只能清除一个

  • 阿飘u
    2016-03-02 17:52:15

    state()中有闭包,里面的int不会被gc回收掉,所以会一直计数,不会停止、而且点击state按钮速度慢一点,能比较明显得感觉到有停滞,说明只clear了其中一个int。也就是前面的var int= setInterval(clock,1000);你也可以在function state(){int=setInterval(clock,1000); console.log(int);}  并且在chrome中进行测试,在控制台进行观察。