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

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

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

正在回答

3 回答

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

<!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>


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

慕村1994845

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

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

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加速的问题

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

小藺子

function startCount(){ if(n==true){ i=setTimeout("a()",1000); n=false; } } //这里判断n==ture的情况下,不需要再设置定时了吧,直接执行不是更简单点么? function startCount(){ if(n==true){ a(); n=false; } }
2016-09-22 回复 有任何疑惑可以回复我~
#2

慕标3062565

不好意思,我是小白,我想问一下:为什么同时启动多个定时器就会加速
2019-10-05 回复 有任何疑惑可以回复我~

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

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

举报

0/150
提交
取消

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

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