首頁 > web前端 > js教程 > 主體

定時器(setTimeout/setInterval)呼叫帶參函數失效解決方法_javascript技巧

WBOY
發布: 2016-05-16 17:39:18
原創
1392 人瀏覽過

首先來看下定時器的用法
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()同樣適用,這裡就不在過多敘述了。
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板