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