啦啦q
2015-08-27 11:12
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
</head>
<script type="text/javascript">
var num=0;
function startCount() {
document.getElementById('count').value=num;
num=num+1;
setTimeout(startCount,1000);
}
</script>
</head>
<body>
<form>
<input type="text" id="count" onclick="startCount()"/>
<input type="button" value="start" onclick="startCount()"/>
</form>
</body>
</html>
setTimeout(function(){
},1000); setTimeout内的方法是异步调用的,相当于开辟了新的线程,它一直在这个新线程里执行(每秒给num+1),你每多点一次就多了一个新线程在做这个操作,所以你觉得是快了(其实不是快了而是你每秒加的不是1而是你点了几次就是每秒加了几次),你可以这样写来清除一个setTimeout,var timer1 = setTimeout(funciton(){//一系列操作},1000); clearTimeout(timer1);这样一来就相当于关闭timer1的线程,终止它不再执行。
点了很多次start后, 就多了很多个timer, 而clearTimeout只能清除对应的timer, 要想全部清除点很多次start后生成的timer, 有啥子办法呢?
只有clearTimeout(对应的timer),对应的timer线程才会关闭。
我也是这块不太懂,还是没理解
点一次就多了一个 timer及(setTimeout()),点2次就会把num在1000毫秒加2 故越来越快
JavaScript进阶篇
469067 学习 · 22582 问题
相似问题