为了账号安全,请及时绑定邮箱和手机立即绑定

有一个bug,请指教

当连续点击开始开始按钮2次以上。停止按钮就失去作用了

正在回答

4 回答

    function mm(){
        clearInterval(i);
   i=setInterval("clock()",100); 
   }

可以通过在开始事件开头设置关闭,保证每次点击开始,前一次定时器就已经关闭

0 回复 有任何疑惑可以回复我~
#1

慕客学渣会总瓢把子3201537 提问者

非常感谢!> .<
2016-06-14 回复 有任何疑惑可以回复我~
#2

狼吻小红帽 回复 慕客学渣会总瓢把子3201537 提问者

111
2016-06-14 回复 有任何疑惑可以回复我~
#3

慕客学渣会总瓢把子3201537 提问者 回复 狼吻小红帽

function mm(){ clearInterval(i); i=setInterval("clock()",100); } 没效果
2016-06-14 回复 有任何疑惑可以回复我~
#4

狼吻小红帽 回复 慕客学渣会总瓢把子3201537 提问者

不应该,我刚才试了下,是成功的!你确定你就改了这一处地方?
2016-06-15 回复 有任何疑惑可以回复我~
查看1条回复

停不下来了

0 回复 有任何疑惑可以回复我~

因为你的mm()函数实际上是添加一个循环计时器,你运行第一次添加一个,运行第一次添加第二个,而clear清除只能清除一个,再此添加一个之后又可以清除一个了。

也就是代码刷新之前,clearInterval和clearTimeout只能用一次;而添加setInterval和setTimeout确可以无数次添加。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
var times=0;
   function clock(){
    //  var time=new Date();               	  
      document.getElementById("clock").value = times;
	  times++;
   }
    var i = setInterval(clock,1000);
		
	function stop(){
		i = setInterval(clock,1000);
	}

</script>
</head>
<body>
  <form>
    <input type="text" id="clock" size="50"  />
    <input type="button" value="Stop" onclick="clearInterval(i)" />
     <input type="button" value="Start"  onclick="stop()"  />
  </form>
</body>
</html>

你试一下上面的代码,初始运行时每秒+1,点击Stop停止计数。

你再点击一下Start,运行为每秒+1;第二次点击变成每秒+1+1;第三次点击变成每秒+1+1+1。

最后点击Stop,变成每秒+1+1;第二次点击还是每秒+1+1。

0 回复 有任何疑惑可以回复我~

我们知道定时器会返回一个值就是他的id,用于停止定时器。当你开始按钮连点两下时,获取到的id就是第二次点击开始的id,而第一次开始的id就无法获取,从而停止按钮只能停止第二次的时间,而第一次点击的开始时间会一直执行下去

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468046    人
  • 解答问题       21891    个

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

进入课程

有一个bug,请指教

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信