以前は、タイマーを直接
setInterval("fn()",2000);
を使用して作成していましたが、最近、jquery を使用してタイマーを作成すると、常に fn が表示されるという問題が発生しました。次のような既存のエラー メッセージ
$(function(){setInterval("fn()",2000);})
解決策は、引用符と括弧を削除し、最も独創的な方法を使用することです
$(function(){setInterval(fn,2000);})
もう 1 つの方法は、次のように jq の拡張機能を記述することです
$(function(){
$.extend({
fn:function() {
alert(" im fn!");
}
});
>
上記は全て書いてありますが問題ありません。しかし、パラメーターを渡す必要がある場合はどうすればよいでしょうか?
上記最初の書き方と同様に、
$(function(){setInterval(fn,2000);})
と書くと
$(function () {setInterval(fn(para),2000);})
がエラーを報告しました。こっちの方が古典的でバカっぽい。
現時点では、関数を組み込んで、
$(function(){setInterval(function(){fn(para)},2000);})
2 番目の方法の配信方法については、こちらの方が簡単なので、これ以上は説明しません。
記念としてブログに投稿してください。すべて基本的なものです。ここも初心者が間違いやすいところです!
//==========================
2 番目のタイプを追加しましょう。パラメータの受け渡しメソッド。
まずコードを見てください
$start = 1;
$.extend({
a:function(t){
$index = t;
alert($index );
$start ;
}
});
このように書こうとする人もいるでしょう。その結果はどうなるでしょうか?結果はアラートになります。これは常に 1 であり、増加しません。ここで注意する必要があるのは、setInterval の最初のパラメーターです。これは二重引用符で囲まれたステートメントであり、内部の内容は変数として解釈されます。上記の書き方に従えば、
setInterval("$.a(1)",2000);
と同等になりますので、結果は分かります。もちろん正しい書き方は
コードをコピーします
a:function(t){
$index = t;
alert($index);
$start;
}
});
setInterval("$.a($start)",
});今回は $start が変数として解釈されます。このステートメントは、function(){a(value)} ではなく、function(){a(variable)} と同等です。