DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> jQuery入門知識 >> JQuery特效代碼 >> 關於setInterval、setTimeout在jQuery中的使用注意事項
關於setInterval、setTimeout在jQuery中的使用注意事項
編輯:JQuery特效代碼     
以前寫定時器的時候,總是習慣直接

setInterval("fn()",2000);
最近碰到個問題,在使用jquery寫定時器時,總是會出現fn不存在的錯誤提示,如下

$(function(){setInterval("fn()",2000);})
解決方法是去掉引號和括號,采用最原始的方法

$(function(){setInterval(fn,2000);})
另外一種就是在書寫jq的擴展,如下
代碼如下:
$(function(){
$.extend({
fn:function(){
alert("im fn!");
}
});
setInterval("$.fn()",2000);
});

以上寫法都是沒什麼問題的。但是如果需要傳遞參數該如何?

像上面第一種寫法,

$(function(){setInterval(fn,2000);})
如果寫成

$(function(){setInterval(fn(para),2000);})
就報錯了。這個比較經典,比較白癡。

這時你可以內置一個function,寫成

$(function(){setInterval(function(){fn(para)},2000);})
這樣也是可以的。

至於第二種方法如何傳遞,這就更簡單了,我就不多說了。

發到博客僅當記憶使用,都是基礎啊!也是初學者容易犯錯的地方!


//========================

還是補充下第二種傳參的方法。

先看段代碼
代碼如下:
$(function(){
$start = 1;
$.extend({
a:function(t){
$index = t;
alert($index);
$start++;
}
});
setInterval("$.a("+$start+")",2000);
});

有一些人會嘗試這麼去寫,結果是什麼?結果就是alert出來的,一直是1,不會增加。這裡需要注意的是setInterval裡面的第一個參數,這是一個語句,用雙引號括了起來,裡面的東西會被解釋成變量。如果按照上面的寫法,相當於

setInterval("$.a(1)",2000);
那麼結果也就無可厚非了。正確的寫法,當然是這樣
代碼如下:
$(function(){
$start = 1;
$.extend({
a:function(t){
$index = t;
alert($index);
$start++;
}
});
setInterval("$.a($start)",2000);
});

這時$start才會被解釋成變量。語句相當於function(){a(變量)},而不是function(){a(值)}。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved