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

【问】点击 stop 可以停止,但是点击 start 两次后,stop 就失效了,在别的工具上实验同样。

<!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 i = setInterval("clock()",100);

   function ms() {

       i = setInterval("clock()",100);

   }

     

</script>

</head>

<body>

  <form>

    <input type="text" id="clock" size="50" style="background:#000;color:#0f0;width:100%" />

    <input type="button" value="start" onclick="ms()" />

    <input type="button" value="Stop" onclick="clearInterval(i)" />

  </form>

</body>

</html>


提问者:qq_巴卡_0 2017-03-19 09:51

个回答

  • _蜡笔小新_
    2017-04-19 11:33:19

    因为你每次 i = setInterval(clock,1000) 之后,i 都只是保存最后一个计时器的变量,你按了多次 start, 再按 stop ,只能清除掉这最后保存的计时器,之前的计时器没有清除掉,也就停不下来了。

    解决的方法是,在 st() 这个函数里的最前面,加一句 clearInterval(i); 


    出处:http://www.imooc.com/qadetail/194899

  • _蜡笔小新_
    2017-04-19 11:18:00

    我就奇怪了,我试了点start两次后就stop不下来了

  • qq_夜江鸣_03946275
    2017-03-26 17:14:16

    你这个应该可以正常运行啊,我这么写就可以

  • 星鸿
    2017-03-21 08:27:29

    我试了一下,没有错,

    我一开始带着自动运行写的,有问题;但是提交后刷新了一下,再试了试又没有出问题了

  • qq__6307
    2017-03-19 17:37:19

    写的有问题 方法不应该那么写