<!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 故越来越快