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

如何解决计时器中点击一次增加1s问题

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>

<script type="text/javascript">
  var num=0;
  var i;
  function startCount(){
     clearTimeout(i); 
    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>

虽然增加了clearTimeout(i);以后解决了数字飙升的问题,但是还存在点一次增加1的问题,有没有大神能解决这个问题?

正在回答

3 回答

你的startCount()函数有问题啊,正确的如下,你的cleanTimeout(i)了.

function startCount(){
    document.getElementById('count').value=num;
    num=num+1;
    i=setTimeout("startCount()",1000);
  }


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

Jiuppo 提问者

非常感谢!
2017-07-31 回复 有任何疑惑可以回复我~

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>计时器</title>


<script type="text/javascript">

  var num=0;

  var i;

  var flag=false;

  

//增加一个布尔变量用于存储值代表start是否开始

//这个方法要置于循环体外

  function flag1(){

    if(flag==false){

       startCount();

       flag=true;

    }else{

       return 0;

    }

  }

  function startCount(){

    document.getElementById('count').value=num;

    num=num+1;

    i=setTimeout("startCount()",1000);

  }

  function stopCount(){

    clearTimeout(i);

    flag=false;

  }

</script>

</head>

<body>

  <form>

    <input type="text" id="count" />

    <input type="button" value="Start" onclick="flag1()" />

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

  </form>

</body>

</html>



增加一个开关装置即可。解决了点一次start增快一次速度和num+1的问题。

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

startCount() 的 cleanTimeout(i) 破坏了循环. 不要这句就好了.

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

举报

0/150
提交
取消

如何解决计时器中点击一次增加1s问题

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