查看演示 下载源码
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则是在每隔指定的毫秒数循环调用函数或表达式,直到clearInterval把它清除。也就是说setTimeout()只执行一次,setInterval()可以执行多次。两个函数的参数也相同,第一个参数是要执行的code或句柄,第二个是延迟的毫秒数。
setTimeOut用法
setTimeout函数的用法如下:
var timeoutID = window.setTimeout(func, [delay, param1, param2, ...]); var timeoutID = window.setTimeout(code, [delay]);timeoutID:定时器ID号,它可以在clearTimeout()函数中被用来清除定时器。
function timeout(){document.getElementById("res").innerHTML=Math.floor(Math.random()*100 + 1); } setTimeout("timeout()",5000); 代码执行时,5秒后调用timeout()函数。var tt = 10; function timego(){tt--;document.getElementById("tt").innerHTML = tt;if(tt==0){ window.location.href="/"; return false;} } var timer = window.setInterval("timego()",1000); 函数timego()定义了页面元素#tt显示的内容,当tt等于0时,页面定向到首页。然后我们定义一个定时器timer,使用setInterval()每隔1秒调用一次timego()。这样timego会执行10次,每次数字tt会减1,直到为0。那么如果想停止定时器,可以使用以下代码:window.clearInterval(timer);代码执行时,10秒后页面跳转到首页。
<script language="JavaScript" type="text/javascript"><!-- function hello(){ alert("hello"); } window.setTimeout(hello,5000);//--> </script>这段代码将使得页面打开5秒钟后显示对话框“hello”。其中最后一句也可以写为: window.setTimeout("hello()",5000); 读者可以体会它们的差别,在window.setInterval方法中也有这样的性质。 如果在延时期限到达之前取消延执行,可以使用window.clearTimeout(timeoutId)方法,该方法接收一个id,表示一个定时器。这个id是由setTimeout方法返回的,例如:<script language="JavaScript" type="text/javascript"><!--function hello(){alert("hello");}var id=window.setTimeout(hello,5000);document.onclick=function(){window.clearTimeout(id); }//--></script>这样,如果要取消显示,只需单击页面任何一部分,就执行了window.clearTimeout方法,使得超时操作被取消。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> New Document </title> </head> <body> <form action="somepage.asp"> <input type="text" value="0" name="txt1"/> <input type="button" value="开始" name="btnStart"/> <input type="button" value="重置" name="btnReset"/> </form> </body> </html><script language="JavaScript" type="text/javascript"><!--//获取表单中的表单域var txt=document.forms[0].elements["txt1"]; var btnStart=document.forms[0].elements["btnStart"]; var btnReset=document.forms[0].elements["btnReset"] //定义定时器的idvar id;//每10毫秒该值增加1var seed=0;btnStart.onclick=function(){//根据按钮文本来判断当前操作 if(this.value=="开始"){ //使按钮文本变为停止 this.value="停止";//使重置按钮不可用 btnReset.disabled=true;//设置定时器,每0.01s跳一次id=window.setInterval(tip,10);}else{//使按钮文本变为开始this.value="开始";//使重置按钮可用 btnReset.disabled=false;//取消定时window.clearInterval(id); } }//重置按钮btnReset.onclick=function(){seed=0; }//让秒表跳一格 function tip(){seed++; txt.value=seed/100;}//--></script>给定时器调用传递参数 无论是window.setTimeout还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,这就需要想方法解决。例如对于函数hello(_name),它用于针对用户名显示欢迎信息: var userName="jack";//根据用户名显示欢迎信息function hello(_name){ alert("hello,"+_name); }这时,如果企图使用以下语句来使hello函数延迟3秒执行是不可行的:window.setTimeout(hello(userName),3000);
window.setTimeout("hello(userName)",3000);
<script language="JavaScript" type="text/javascript"> <!-- var userName="jack";//根据用户名显示欢迎信息function hello(_name){alert("hello,"+_name);}//创建一个函数,用于返回一个无参数函数function _hello(_name){return function(){hello(_name);} }window.setTimeout(_hello(userName),3000); //--></script>这里定义了一个函数_hello,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。在window.setTimeout函数中,使用_hello(userName)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。tttt=setTimeout("northsnow()",1000);clearTimeout(tttt);或者:
tttt=setInterval("northsnow()",1000);clearInteval(tttt);
<div id="liujincai"></div><input type="button" name="start" value="start" onclick="startShow();"><input type="button" name="stop" value="stop" onclick="stop();"><script language="javascript"> var intvalue=1; var timer2=null; function startShow() { liujincai.innerHTML=liujincai.innerHTML + " " + (intvalue ++).toString();timer2=window.setTimeout("startShow()",2000); } function stop() { window.clearTimeout(timer2);}</script>或者:<div id="liujincai"></div><input type="button" name="start" value="start" onclick="timer2=window.setInterval("startShow()",2000);//startShow();"><input type="button" name="stop" value="stop" onclick="stop();"><script language="javascript">var intvalue=1; var timer2=null;function startShow() { liujincai.innerHTML=liujincai.innerHTML + " " + (intvalue ++).toString();}function stop() { window.clearInterval(timer2); }</script>