setTimeout与setInterval方法的区别
setTimeout(表达式,延时时间)
在执行时,是在载入后延迟指定时间后,去执行一次表达式,次数是一次
[setInterval]
setInterval(表达式,交互时间)
则不一样,它从载入后,每隔指定的时间就执行一次表达式
最近学javascript,有个例子是在网页中显示钟表,代码如下:
1 <html> 2 <head> 3 <script type="text/javascript"> 4 function startTime() 5 { 6 var today=new Date() 7 var h=today.getHours() 8 var m=today.getMinutes() 9 var s=today.getSeconds() 10 // add a zero in front of numbers<10 11 m=checkTime(m) 12 s=checkTime(s) 13 document.getElementByIdx_x('txt').innerHTML=h+":"+m+":"+s 14 t=setTimeout('startTime()',500) 15 } 16 17 function checkTime(i) 18 { 19 if (i<10) 20 {i="0" + i} 21 return i 22 } 23 </script> 24 </head> 25 26 <body onload="startTime()"> 27 <div id="txt"></div> 28 </body> 29 </html>
setTimeout与setInterval方法的区别:
setTimeout(a(),500),在500毫秒后只执行1次方法a(),而setInterval(a(),500)是每隔500秒执行一次
方法a()。也就是说如果不把前者放在循环里,就不能实现后者的循环功能。
怎样循环调用setTimeout(a(),500)方法来来实现setInterval(a(),500)的功能呢?
比如:function a(){
....... //其它代码
setTimeout('a()',5000); //5秒后运行a()函数
}
两个方法能实现同样的效果,但是还是有区别的。
假设需要10秒时间运行a()方法里的其它代码,也就是说第一次运行至代码setTimeout('a()',5000)需要10秒。之后5秒钟再次运行a()方法,则第二次运行至代码setTimeout('a()',5000)需要25秒。
若用setInterval(a(),5000),不管a()方法需要多少时间运行,都是每隔5秒运行一次。
那什么时候用setTimeout?什么时候用setInterval?
如果不希望连续调用产生互相干扰的状况就用前者,如果希望每隔固定时间精确的执行某个动作就用后者。具体情况还是要具体分析的。
浙公网安备 33010602011771号