複製鏈接
請複製以下鏈接發送給好友

setTimeout()

鎖定
setTimeout() 方法用於在指定的毫秒數後調用函數或計算表達式。
外文名
setTimeout()
語    法
setTimeout(code,millisec)
用    途
調用函數或計算表達式
參    數
millisec、code

目錄

setTimeout()語法

setTimeout(code,millisec)

setTimeout()參數

code (必需):(本意是代碼的意思)要調用的函數後要執行的 JavaScript 代碼串。
millisec(必需):在執行代碼前需等待的毫秒數。
提示:
setTimeout() 只執行 code 一次。如果要多次調用,請使用 setInterval() 或者讓 code 自身再次調用 setTimeout()。
實例:
<html>
<head>
<scripttype="text/javascript">
functiontimedMsg()
{
vart=
setTimeout("
alert('5seconds!')",5000)
}
</script>
</head>
<body>
<form>
<inputtype="button"
value="Displaytimedalertbox!"onClick="timedMsg()">
</form>
<p>Clickonthebuttonabove.Analertboxwillbedisplayedafter5seconds.</p>
</body>
</html>

實例:
functionclockon(bgclock){
varnow=newDate();
varyear=now.getFullYear();
varmonth=now.getMonth();
vardate=now.getDate();
varday=now.getDay();
varhour=now.getHours();
varminu=now.getMinutes();
varsec=now.getSeconds();
varweek;

month=month+1;
if(month<10)month="0"+month;
if(date<10)date="0"+date;
if(hour<10)hour="0"+hour;
if(minu<10)minu="0"+minu;
if(sec<10)sec="0"+sec;
/*vararr_week=newArray("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
week=arr_week[day];
*/
switch(day){
case1:week="星期一";break;
case2:week="星期二";break;
case3:week="星期三";break;
case4:week="星期四";break;
case5:week="星期五";break;
case6:week="星期六";break;
default:week="星期日";break;
}
vartime="";
time=year+"年"+month+"月"+date+"日"+week+""+hour+":"+minu+":"+sec;
if(document.all){
bgclock.innerHTML="系統公告:["+time+"]"
}
vartimer=
setTimeout("clockon(bgclock)",200);
}

setTimeout()執行

我們常常會遇到一種情況,setTimeout(code,millisec)中code包含形參
例如:我們需要在1秒後向用户提示的信息存儲於變量msg中,
var msg='1shaspassed!';
此時不論是直接執行
setTimeout(
alert(msg),1000);//alert(msg)會被立即執行
還是
setTimeout(“alert(msg)”,1000);//系統報錯msgisnotdefined(chrome)

都不能達到預期的目的,因為定時器會努力地將code轉化為一個function對象,第一個錯例裏定時器立即執行code希求返回一個function對象,結果撲了空;第二個雖然成功封裝出function對象,但是定時器在msg的可見域外執行code,所以msg得不到正確的傳遞
推薦的解決辦法是使用匿名函數回調
var msg='1shaspassed!';



setTimeout(function(){



alert(msg);


},1000);
第一個參數傳遞了一個會調用所需語句的function對象,這樣就解決了code帶參的問題。