关于clearTimeout()的疑问

js进阶篇中8-6取消计时器clearTimeout()代码如下

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
</head>
<script type="text/javascript">
  var num=0;
  var i;
  function startCount(){
    document.getElementById('count').value=num;
    num=num+1;
    i=setTimeout("startCount()",1000);
  }
  function stopCount(){
    clearTimeout(i);
  }
</script>
</head>
<body>
  <form>
    <input type="text" id="count" />
    <input type="button" value="Start" onclick="startCount()" />
    <input type="button" value="Stop" onclick="stopCount()"  />
  </form>
</body>
</html>

点击多少次Start按钮,就要点击多少次Stop按钮才能停在计时器。我想问此时i值是怎么保存setTimeout()的id值,通过数组吗?假设是数组的话,clearTimeout(i)方法是用shift()删除数组i里的元素和splice()添加元素的?

阳光雨下
浏览 2254回答 1
1回答

pardon110

注意setTimeout()产生的id值,全部保存到单一全局变量i中。所以在你写的这段代码中,点击多少次Start按钮,就要点击多少次Stop按钮才能停在计时器 的想法是错的。因为每次产生的settimeout()id值,都被覆盖了。所以无论按多少次start,一次stop就可以了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript