js定时器问题?js高手请进!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js定时器问题?js高手请进!相关的知识,希望对你有一定的参考价值。

今天写了个js定时器的问题: <!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> <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css"/> <script language="javascript"> window.onload=function() var t=null; var i=0; function a() i++; console.log(i); if(i==20) clearTimeout(t); t=setTimeout(a,10); a(); </script> </head> <body> <div id="div1"></div> </body> </html> 这样一个函数,在火狐下,输出到32,在ie和chrome下会一直执行。为什么?分析一下原因。 而在下面这个程序中,点击“end"为什么可以彻底关掉定时器。 <html> <head> <script type="text/javascript"> var c=0 var t function timedCount() document.getElementById('txt').value=c c=c+1 t=setTimeout("timedCount()",100) function stopCount() clearTimeout(t) </script> </head> <body> <form> <input type="button" value="start" onClick="timedCount()"> <input type="text" id="txt"> <input type="button" value="end" onClick="stopCount()"> </form> </body> </html> 为什么?第一个函数明显没有关掉定时器,第二个程序定时器没有关掉。

参考技术A 其实很好理解,你点击一次按钮,相当于叫一个人过去,每隔300毫秒把div移动一下;你点两次,就相当于让两个人去干同样的事情,都是每隔300毫秒移动一次div,但是,假设过了300毫秒,第一个人过去移动了div,第二个人也会过去移动div,就相当于每隔300毫秒移动两倍原来的距离。你点多了,自然就移动的快。比如说你第一次点击后,间隔100毫秒点击第二次,那么第一个人在移动div后,第二个人间隔100毫秒后也会去移动div。

以上是关于js定时器问题?js高手请进!的主要内容,如果未能解决你的问题,请参考以下文章

javascript高手请进!关于就js控制网页图片放大缩小的问题

js定时器的问题

JAVA垃圾回收机制的工作原理?

js定时器每秒执行一次,为啥时间会不准?

有关JS定时器的问题,求大神作答

高手请进!关于CSS中class选择器使用多种样式的问题