定時器(setTimeout/setInterval)調用帶參函數(shù)失效解決方法
更新時間:2013年03月26日 11:04:09 作者:
setInterval()方法可按照指定的周期(以毫秒計)來調用函數(shù)或計算表達式,setTimeout()方法用于在指定的毫秒數(shù)后調用函數(shù)或計算表達式,詳細使用方法可以參考下本文
首先來看下定時器的用法
1. setInterval(code,millisec[,"lang"]) setInterval() 方法可按照指定的周期(以毫秒計)來調用函數(shù)或計算表達式。
2.setTimeout(code,millisec) setTimeout() 方法用于在指定的毫秒數(shù)后調用函數(shù)或計算表達式。
提示:setTimeout() 只執(zhí)行 code 一次。如果要多次調用,請使用 setInterval() 或者讓 code 自身再次調用 setTimeout()。
也許你曾碰到過這樣的問題,不管是setInterval()還是setTimeout(),當code參數(shù)里放一個帶參函數(shù)時,定時器都會失效,看下面這個例子:
function test(str){
alert(str);
}
var a = "abcde"
setTimeout(test(a),3000);
執(zhí)行上面代碼,頁面不會延遲3秒調用test(a),而是會立即執(zhí)行test(a),IE、FF、Chrome下都會出現(xiàn)這個問題,如果你經(jīng)常用到定時器,這個問題應該應該經(jīng)常會碰到,那么要怎樣去解決呢?
筆者在這里歸納兩種常用的解決方法,當然應該也還有其他的解決方法,在這里就不一一贅述。
方法1:用匿名函數(shù)包裹
function test(str){
alert(str);
}
var a = "abcde"
setTimeout(function(){
test(a);
},3000);
方法2:用引號包裹需調用的函數(shù)
function test(str){
alert(str);
}
var a = "abcde"
setTimeout("test('+a+')",3000);
上面只以setTimeout()為例,setInterval()同樣適用,這里就不在過多敘述了。
1. setInterval(code,millisec[,"lang"]) setInterval() 方法可按照指定的周期(以毫秒計)來調用函數(shù)或計算表達式。
參數(shù) | 描述 |
---|---|
code | 必需,要調用的函數(shù)或要執(zhí)行的代碼串。 |
millisec | 必需,周期性執(zhí)行或調用 code 之間的時間間隔,以毫秒計。 |
2.setTimeout(code,millisec) setTimeout() 方法用于在指定的毫秒數(shù)后調用函數(shù)或計算表達式。
參數(shù) | 描述 |
---|---|
code | 必需,要調用的函數(shù)后要執(zhí)行的 JavaScript 代碼串。 |
millisec | 必需,在執(zhí)行代碼前需等待的毫秒數(shù)。 |
提示:setTimeout() 只執(zhí)行 code 一次。如果要多次調用,請使用 setInterval() 或者讓 code 自身再次調用 setTimeout()。
也許你曾碰到過這樣的問題,不管是setInterval()還是setTimeout(),當code參數(shù)里放一個帶參函數(shù)時,定時器都會失效,看下面這個例子:
復制代碼 代碼如下:
function test(str){
alert(str);
}
var a = "abcde"
setTimeout(test(a),3000);
執(zhí)行上面代碼,頁面不會延遲3秒調用test(a),而是會立即執(zhí)行test(a),IE、FF、Chrome下都會出現(xiàn)這個問題,如果你經(jīng)常用到定時器,這個問題應該應該經(jīng)常會碰到,那么要怎樣去解決呢?
筆者在這里歸納兩種常用的解決方法,當然應該也還有其他的解決方法,在這里就不一一贅述。
方法1:用匿名函數(shù)包裹
復制代碼 代碼如下:
function test(str){
alert(str);
}
var a = "abcde"
setTimeout(function(){
test(a);
},3000);
方法2:用引號包裹需調用的函數(shù)
復制代碼 代碼如下:
function test(str){
alert(str);
}
var a = "abcde"
setTimeout("test('+a+')",3000);
上面只以setTimeout()為例,setInterval()同樣適用,這里就不在過多敘述了。
相關文章
Bootstrap開發(fā)中Tab標簽頁切換圖表顯示問題的解決方法
這篇文章主要給大家介紹了關于Bootstrap開發(fā)中Tab標簽頁切換圖表顯示問題的解決方法,文中通過圖文以及示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-07-07filters.revealTrans.Transition使用方法小結
有看到幻燈片調用會用到divid.filters.revealTrans.Transition=Math.floor(Math.random()*23)和divid.filters.revealTrans.apply(),那么這兩個都是什么意思呢?2010-08-08