DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 定時器(setTimeout/setInterval)調用帶參函數失效解決方法
定時器(setTimeout/setInterval)調用帶參函數失效解決方法
編輯:關於JavaScript     
首先來看下定時器的用法
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);
},3000);

方法2:用引號包裹需調用的函數
復制代碼 代碼如下:
function test(str){
alert(str);
}
var a = "abcde"
setTimeout("test('+a+')",3000);

上面只以setTimeout()為例,setInterval()同樣適用,這裡就不在過多敘述了。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved