首先來看下定時器的用法
1. setInterval(code,millisec[,"lang"]) setInterval() 方法可依照指定的週期(以毫秒計)呼叫函數或計算表達式。
参数 |
描述 |
code |
必需,要调用的函数或要执行的代码串。 |
millisec |
必需,周期性执行或调用 code 之间的时间间隔,以毫秒计。 |
2.setTimeout(code,millisec) setTimeout() 方法用於在指定的毫秒數後呼叫函數或計算表達式。
参数 |
描述 |
code |
必需,要调用的函数后要执行的 JavaScript 代码串。 |
millisec |
必需,在执行代码前需等待的毫秒数。 |
提示:setTimeout() 只執行 code 一次。如果要多次調用,請使用 setInterval() 或讓 code 本身再次調用 setTimeout()。
也許你曾經碰到過這樣的問題,不管是setInterval()還是setTimeout(),當code參數裡放一個帶參函數時,定時器都會失效,看下面這個例子:
function test(str){
alert(str);
}
}
var a = "abcde"
setTimeout(test(a),3000);
執行上面程式碼,頁面不會延遲3秒呼叫test(a),而是會立刻執行test(a),IE、FF、Chrome下方都會出現這個問題,如果你常用到定時器,這個問題應該要常常碰到,那麼要怎麼去解決呢?
筆者在這裡歸納兩種常用的解決方法,當然應該也還有其他的解決方法,在這裡就不一一贅述。
方法1:用匿名函數包裹
程式碼如下:
程式碼如下:
function test (str){
alert(str);
}
var a = "abcde"
setTimeout(function(){
test(a);
複製程式碼
複製程式碼
程式碼如下:
function test(str){ alert(str); } var a = "abcde" setTimeout("test(' a ')",3000) ; 上面只以setTimeout()為例,setInterval()同樣適用,這裡就不在過多敘述了。