關(guān)于setInterval、setTimeout在jQuery中的使用注意事項
更新時間:2011年09月28日 00:12:58 作者:
最近碰到個問題,在使用jquery寫定時器時,總是會出現(xiàn)fn不存在的錯誤提示
以前寫定時器的時候,總是習慣直接
setInterval("fn()",2000);
最近碰到個問題,在使用jquery寫定時器時,總是會出現(xiàn)fn不存在的錯誤提示,如下
$(function(){setInterval("fn()",2000);})
解決方法是去掉引號和括號,采用最原始的方法
$(function(){setInterval(fn,2000);})
另外一種就是在書寫jq的擴展,如下
$(function(){
$.extend({
fn:function(){
alert("im fn!");
}
});
setInterval("$.fn()",2000);
});
以上寫法都是沒什么問題的。但是如果需要傳遞參數(shù)該如何?
像上面第一種寫法,
$(function(){setInterval(fn,2000);})
如果寫成
$(function(){setInterval(fn(para),2000);})
就報錯了。這個比較經(jīng)典,比較白癡。
這時你可以內(nèi)置一個function,寫成
$(function(){setInterval(function(){fn(para)},2000);})
這樣也是可以的。
至于第二種方法如何傳遞,這就更簡單了,我就不多說了。
發(fā)到博客僅當記憶使用,都是基礎(chǔ)啊!也是初學者容易犯錯的地方!
//========================
還是補充下第二種傳參的方法。
先看段代碼
$(function(){
$start = 1;
$.extend({
a:function(t){
$index = t;
alert($index);
$start++;
}
});
setInterval("$.a("+$start+")",2000);
});
有一些人會嘗試這么去寫,結(jié)果是什么?結(jié)果就是alert出來的,一直是1,不會增加。這里需要注意的是setInterval里面的第一個參數(shù),這是一個語句,用雙引號括了起來,里面的東西會被解釋成變量。如果按照上面的寫法,相當于
setInterval("$.a(1)",2000);
那么結(jié)果也就無可厚非了。正確的寫法,當然是這樣
$(function(){
$start = 1;
$.extend({
a:function(t){
$index = t;
alert($index);
$start++;
}
});
setInterval("$.a($start)",2000);
});
這時$start才會被解釋成變量。語句相當于function(){a(變量)},而不是function(){a(值)}。
setInterval("fn()",2000);
最近碰到個問題,在使用jquery寫定時器時,總是會出現(xiàn)fn不存在的錯誤提示,如下
$(function(){setInterval("fn()",2000);})
解決方法是去掉引號和括號,采用最原始的方法
$(function(){setInterval(fn,2000);})
另外一種就是在書寫jq的擴展,如下
復(fù)制代碼 代碼如下:
$(function(){
$.extend({
fn:function(){
alert("im fn!");
}
});
setInterval("$.fn()",2000);
});
以上寫法都是沒什么問題的。但是如果需要傳遞參數(shù)該如何?
像上面第一種寫法,
$(function(){setInterval(fn,2000);})
如果寫成
$(function(){setInterval(fn(para),2000);})
就報錯了。這個比較經(jīng)典,比較白癡。
這時你可以內(nèi)置一個function,寫成
$(function(){setInterval(function(){fn(para)},2000);})
這樣也是可以的。
至于第二種方法如何傳遞,這就更簡單了,我就不多說了。
發(fā)到博客僅當記憶使用,都是基礎(chǔ)啊!也是初學者容易犯錯的地方!
//========================
還是補充下第二種傳參的方法。
先看段代碼
復(fù)制代碼 代碼如下:
$(function(){
$start = 1;
$.extend({
a:function(t){
$index = t;
alert($index);
$start++;
}
});
setInterval("$.a("+$start+")",2000);
});
有一些人會嘗試這么去寫,結(jié)果是什么?結(jié)果就是alert出來的,一直是1,不會增加。這里需要注意的是setInterval里面的第一個參數(shù),這是一個語句,用雙引號括了起來,里面的東西會被解釋成變量。如果按照上面的寫法,相當于
setInterval("$.a(1)",2000);
那么結(jié)果也就無可厚非了。正確的寫法,當然是這樣
復(fù)制代碼 代碼如下:
$(function(){
$start = 1;
$.extend({
a:function(t){
$index = t;
alert($index);
$start++;
}
});
setInterval("$.a($start)",2000);
});
這時$start才會被解釋成變量。語句相當于function(){a(變量)},而不是function(){a(值)}。
您可能感興趣的文章:
- setInterval和setTimeout停止的方法
- setTimeout和setInterval的區(qū)別你真的了解嗎?
- Jquery中使用setInterval和setTimeout的方法
- JavaScript SetInterval與setTimeout使用方法詳解
- Js中setTimeout()和setInterval() 何時被調(diào)用執(zhí)行的用法
- JS中setInterval、setTimeout不能傳遞帶參數(shù)的函數(shù)的解決方案
- setTimeout和setInterval的瀏覽器兼容性分析
- Javascript對象中關(guān)于setTimeout和setInterval的this介紹
- 定時器(setTimeout/setInterval)調(diào)用帶參函數(shù)失效解決方法
- JS中setTimeout和setInterval的最大延時值詳解
相關(guān)文章
jquery刷新頁面的實現(xiàn)代碼(局部及全頁面刷新)
jquery刷新頁面的實現(xiàn)代碼(局部及全頁面刷新) ,需要的朋友可以參考下。2011-07-07超級有用的13個基于jQuery的內(nèi)容滾動插件和教程
這篇文章與大家分享13個超級有用的 jQuery 內(nèi)容滾動插件和教程。您可能經(jīng)常能看到一些網(wǎng)站上特色區(qū)域的內(nèi)容以滾動方式變化,這是一種在有限的網(wǎng)頁空間內(nèi)展示更多內(nèi)容的良好方式,而且能吸引用戶注意力。2011-07-07jquery.autocomplete修改實現(xiàn)鍵盤上下鍵自動填充示例
根據(jù)需求要實現(xiàn)通過鍵盤上下移動,獲得聯(lián)想菜單中的值,如同google baidu的查詢功能,下面的代碼是自己手寫的,喜歡的朋友可以嘗試操作下2013-11-11javascript trim函數(shù)在IE下不能用的解決方法
trim 函數(shù)在firefox 下面使用沒有問題,但是在IE下就報錯,下面是可行的解決方法,大家可以看看2014-09-09