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进阶篇
469185 学习 · 22584 问题
相似问题