jqueryでsettimeoutとsetIntervalを使用する際の注意点
2936 ワード
以前はタイマーを書くとき、いつも直接
setInterval("fn()",2000);
最近、jqueryライトタイマを使用すると、fnが存在しないというエラーメッセージが常に表示されます.
$(function(){setInterval("fn()",2000);})
解決策は引用符と括弧を抜き、最も原始的な方法を採用することです.
$(function(){setInterval(fn,2000);})
もう1つはjqを書く拡張で、以下のようにします.
以上の書き方は問題ありません.しかし、パラメータを渡す必要がある場合はどうすればいいですか?
上記の最初の書き方のように、
$(function(){setInterval(fn,2000);})
書くなら
$(function(){setInterval(fn(para),2000);})
新聞を間違えた.これはクラシックで、バカです.
functionを内蔵して書くことができます
$(function(){setInterval(function(){fn(para)},2000);})
これでもいいです.
2つ目の方法がどのように伝わるかについては、これはもっと簡単で、私はあまり言いません.
ブログに投稿するのは記憶として使うだけで、すべて基礎ですね!初心者の方が間違いやすいところでもあります!
//========================
やはり第2の伝参の方法を補充します.
まずセグメントコードを見て
このように書いてみる人もいますが、結果は何ですか?結果はalertが出てきて、ずっと1で、増加しません.ここで注意しなければならないのはsetIntervalの中の最初のパラメータで、これは文で、二重引用符で囲まれていて、中のものは変数として解釈されます.上記のように書けば
setInterval("$.a(1)",2000);
それでは結果も厚かましくない.正しい書き方、もちろんそうです
このとき$startは変数として解釈されます.文はfunction(){a(値)}ではなくfunction(){a(変数)}に相当します.
setInterval("fn()",2000);
最近、jqueryライトタイマを使用すると、fnが存在しないというエラーメッセージが常に表示されます.
$(function(){setInterval("fn()",2000);})
解決策は引用符と括弧を抜き、最も原始的な方法を採用することです.
$(function(){setInterval(fn,2000);})
もう1つは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);})
これでもいいです.
2つ目の方法がどのように伝わるかについては、これはもっと簡単で、私はあまり言いません.
ブログに投稿するのは記憶として使うだけで、すべて基礎ですね!初心者の方が間違いやすいところでもあります!
//========================
やはり第2の伝参の方法を補充します.
まずセグメントコードを見て
$(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(変数)}に相当します.