为什么连续点击start可以加速?

来源:8-6 取消计时器clearTimeout()

AcerYyzy

2016-08-31 23:30

为什么连续点击start可以加速,而连续点击stop可以减速,原理是不是这样?:点一次启动一个num+1的函数,如果一秒内点了4次start,那么一秒就num+4。

写回答 关注

3回答

  • 慕村1994845
    2016-10-25 20:45:14

    看下面的代码,设置双计时,可用于围棋比赛:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript">
       var num=0;
       var i;
       var n=true;
       function st(){
    	   document.getElementById("txt").value=num;
    	   num=num+1;
    	   i=setTimeout("st()",1000);
    	   }
    	function startCount(){
    		if(n==true){//n初始值为true,可以执行以下代码,执行到n=false停止
    		 num=0;
    		    clearTimeout(i);
    			setTimeout("st()",1000);
    			n=false;
    			}
    		}   
    	function stopCount(){
    		if(n==false){//当n=false,执行以下代码,执行到n=true停止
    		num=0;
    		clearTimeout(i);
    		setTimeout("st()",1000);
    		 // clearTimeout(i);
    		   n=true;//而当n=true;再次执行startCount()函数,按照如此单一的循环模式,
    		   //不会再出现多次点击start出现计时加速的现象
    		  
    		  }
           }
    </script> 
    <style type="text/css">
    *{padding:0; margin:0; font-size:24px; color:#F00;}
    #txt{text-align:center;}
    input{color: #C33; font-size:24px; font-family:"华文隶书"; font-weight:bold;}
    </style>
    </head>
    
    <body>
    <form>
    <input type="button" value="start" onclick="startCount()" />
       <input type="text" id="txt" />
       <input type="button" value="start" onclick="stopCount()" />
    </form>
    </body>
    </html>


    慕村1994...

    function startCount(){ if(n==true){//n初始值为true,可以执行以下代码,执行到n=false停止 clearTimeout(i);//这里,当代码运行完第一次循环,再次开始运行时,此处的clearTimeout(i)只是停时 num=0; //而为了让计时器再次重新开始计时,必须重置初始值再次为0;下面的同样道理 setTimeout("st()",1000); n=false; } }

    2016-10-25 20:55:33

    共 1 条回复 >

  • q_Amily
    2016-09-06 18:20:36

    那是因为你没点击一次开始  定时器就启动一个  多个定时器运行 自然速度就快    而点击一次 结束  仅仅取消一个定时器   正确的方法应该是  点击一次开始之后   就让  开始按钮再点击不起作用

    var num=0;

      var i;

      var n=true;

      function a(){

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

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

        num=num+1;

      } 

     

      function startCount(){

        if(n==true){

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

            n=false;

        }

      }

      

      function stopCount(){

          if(n==false){

            clearTimeout(i);

            n=true;

          }

      }

    //这是之前有同学对这个问题的回答,可以解决多次点击start加速的问题

    慕标3062...

    不好意思,我是小白,我想问一下:为什么同时启动多个定时器就会加速

    2019-10-05 15:37:47

    共 2 条回复 >

  • Solomon_0
    2016-09-01 00:18:03

    不光是点start,你试试在一个不影响代码的地方加空格,也会导致加速,具体原因就不清楚了。

JavaScript进阶篇

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

468194 学习 · 21891 问题

查看课程

相似问题