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

来源:8-4 取消计时器clearInterval()

好笑

2016-03-02 17:28

<!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>

写回答 关注

2回答

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

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

    阿飘u 回复maiziO...

    http://www.w3cfuns.com/notes/20683/0092dc6066b369fd962ef4aee66d1236.html 可以看看我写的这篇文。

    2016-03-12 11:57:16

    共 2 条回复 >

  • 阿飘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中进行测试,在控制台进行观察。

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题