定時器(setTimeout/setInterval)調(diào)用帶參函數(shù)失效解決方法
更新時間:2013年03月26日 11:04:09 作者:
setInterval()方法可按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達(dá)式,setTimeout()方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達(dá)式,詳細(xì)使用方法可以參考下本文
首先來看下定時器的用法
1. setInterval(code,millisec[,"lang"]) setInterval() 方法可按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達(dá)式。
2.setTimeout(code,millisec) setTimeout() 方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達(dá)式。
提示:setTimeout() 只執(zhí)行 code 一次。如果要多次調(diào)用,請使用 setInterval() 或者讓 code 自身再次調(diào)用 setTimeout()。
也許你曾碰到過這樣的問題,不管是setInterval()還是setTimeout(),當(dāng)code參數(shù)里放一個帶參函數(shù)時,定時器都會失效,看下面這個例子:
function test(str){
alert(str);
}
var a = "abcde"
setTimeout(test(a),3000);
執(zhí)行上面代碼,頁面不會延遲3秒調(diào)用test(a),而是會立即執(zhí)行test(a),IE、FF、Chrome下都會出現(xiàn)這個問題,如果你經(jīng)常用到定時器,這個問題應(yīng)該應(yīng)該經(jīng)常會碰到,那么要怎樣去解決呢?
筆者在這里歸納兩種常用的解決方法,當(dāng)然應(yīng)該也還有其他的解決方法,在這里就不一一贅述。
方法1:用匿名函數(shù)包裹
function test(str){
alert(str);
}
var a = "abcde"
setTimeout(function(){
test(a);
},3000);
方法2:用引號包裹需調(diào)用的函數(shù)
function test(str){
alert(str);
}
var a = "abcde"
setTimeout("test('+a+')",3000);
上面只以setTimeout()為例,setInterval()同樣適用,這里就不在過多敘述了。
1. setInterval(code,millisec[,"lang"]) setInterval() 方法可按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達(dá)式。
參數(shù) | 描述 |
---|---|
code | 必需,要調(diào)用的函數(shù)或要執(zhí)行的代碼串。 |
millisec | 必需,周期性執(zhí)行或調(diào)用 code 之間的時間間隔,以毫秒計。 |
2.setTimeout(code,millisec) setTimeout() 方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達(dá)式。
參數(shù) | 描述 |
---|---|
code | 必需,要調(diào)用的函數(shù)后要執(zhí)行的 JavaScript 代碼串。 |
millisec | 必需,在執(zhí)行代碼前需等待的毫秒數(shù)。 |
提示:setTimeout() 只執(zhí)行 code 一次。如果要多次調(diào)用,請使用 setInterval() 或者讓 code 自身再次調(diào)用 setTimeout()。
也許你曾碰到過這樣的問題,不管是setInterval()還是setTimeout(),當(dāng)code參數(shù)里放一個帶參函數(shù)時,定時器都會失效,看下面這個例子:
復(fù)制代碼 代碼如下:
function test(str){
alert(str);
}
var a = "abcde"
setTimeout(test(a),3000);
執(zhí)行上面代碼,頁面不會延遲3秒調(diào)用test(a),而是會立即執(zhí)行test(a),IE、FF、Chrome下都會出現(xiàn)這個問題,如果你經(jīng)常用到定時器,這個問題應(yīng)該應(yīng)該經(jīng)常會碰到,那么要怎樣去解決呢?
筆者在這里歸納兩種常用的解決方法,當(dāng)然應(yīng)該也還有其他的解決方法,在這里就不一一贅述。
方法1:用匿名函數(shù)包裹
復(fù)制代碼 代碼如下:
function test(str){
alert(str);
}
var a = "abcde"
setTimeout(function(){
test(a);
},3000);
方法2:用引號包裹需調(diào)用的函數(shù)
復(fù)制代碼 代碼如下:
function test(str){
alert(str);
}
var a = "abcde"
setTimeout("test('+a+')",3000);
上面只以setTimeout()為例,setInterval()同樣適用,這里就不在過多敘述了。
相關(guān)文章
Bootstrap開發(fā)中Tab標(biāo)簽頁切換圖表顯示問題的解決方法
這篇文章主要給大家介紹了關(guān)于Bootstrap開發(fā)中Tab標(biāo)簽頁切換圖表顯示問題的解決方法,文中通過圖文以及示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07JavaScript數(shù)組排序的六種常見算法總結(jié)
這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組排序的六種常見算法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用JavaScript數(shù)組具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08快速查找數(shù)組中的某個元素并返回下標(biāo)示例
最近在寫jquery的combobox插件時遇到效率問題,再加上jquery選擇器的類帥選,導(dǎo)致效率很慢,采用以下方式二,可以輕松解決此問題2013-09-09filters.revealTrans.Transition使用方法小結(jié)
有看到幻燈片調(diào)用會用到divid.filters.revealTrans.Transition=Math.floor(Math.random()*23)和divid.filters.revealTrans.apply(),那么這兩個都是什么意思呢?2010-08-08javascript實(shí)現(xiàn)蒙版與禁止頁面滾動
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)蒙版與禁止頁面滾動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-01-01