AcerYyzy
2016-08-31 23:30
为什么连续点击start可以加速,而连续点击stop可以减速,原理是不是这样?:点一次启动一个num+1的函数,如果一秒内点了4次start,那么一秒就num+4。
看下面的代码,设置双计时,可用于围棋比赛:
<!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>
那是因为你没点击一次开始 定时器就启动一个 多个定时器运行 自然速度就快 而点击一次 结束 仅仅取消一个定时器 正确的方法应该是 点击一次开始之后 就让 开始按钮再点击不起作用
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加速的问题
不光是点start,你试试在一个不影响代码的地方加空格,也会导致加速,具体原因就不清楚了。
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题