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

为什么我点击结束计时之后,再次重新计时,不是从0开始,而是接着之前的数字开始计时?

为什么我点击结束计时之后,再次重新计时,不是从0开始,而是接着之前的数字开始计时?

<!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>Document</title>     <script>     window.onload = function() {             var a = 0;             obtn1 = document.getElementById("btn1");             obtn2 = document.getElementById("btn2");             obtn1.onclick = function() {                 setTimeout(function rec() {                     document.getElementById("txt").value = a;                     a = a + 1;                     x = setTimeout(rec, 1000)                 }, 1000)             }             obtn2.onclick = function() {                 var b = 0;                 setTimeout(document.getElementById('txt').value=b, 0);                   clearTimeout(x);                 }             }     </script> </head> <body>     <input type="text" name="text" id="txt" />     <input type="button" id="btn1" value="开始计时!" />     <input type="button" id="btn2" value="结束计时!" /> </body> </html>为什么我点击结束计时之后,再次重新计时,不是从0开始,而是接着之前的数字开始计时?  请问问题出在哪儿了?怎么修改
查看完整描述

1 回答

已采纳
?
千秋此意

TA贡献158条经验 获得超187个赞

变量a没重置,这样改就行了:

obtn2.onclick = function() {
    document.getElementById('txt').value = 0;
    a = 0;
    clearTimeout(x);
}

其他部分不变

查看完整回答
1 反对 回复 2017-05-11
  • abc123456789def
    abc123456789def
    测试成功,仅仅是document.getElementById('txt').value = 0;不是清零吗? a=0;的意思是告诉它重新从0开始么?
  • 千秋此意
    千秋此意
    额。。你原来那句setTimeout(document.getElementById('txt').value=b, 0); 不也是清零吗=。= 另外 你这个变量a是放在点击事件外面的,所以每次你点击btn1时并不会重置a,所以就需要手动重新赋值为零啦,当然你也可以把 var a = 0;这一句放到 btn1.onclik的回调函数内部去
  • 千秋此意
    千秋此意
    就是那个响应onclick事件的匿名函数。。
点击展开后面2
  • 1 回答
  • 0 关注
  • 2104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信