私は一連のいくつかの遅延関数を持つ関数を持っています:
function greet(t) {
$("div").delay(t*2).queue(function(n) {
$(this).html("Bonjour");
n();
});
$("div").delay(t*3).queue(function(n) {
$(this).html("Hola");
n();
});
$("div").delay(t*4).queue(function(n) {
$(this).html("Hallo");
n();
});
$("div").delay(t*5).queue(function(n) {
$(this).html("Hello"); // back to original
n();
});
}
greet(500);
シンプルな<div>Hello</div>
HTMLで。このように、グリーティングは 500 ミリ秒ごとに言語を変更します。
関数が完了した後 (約 2 秒、2000 ミリ秒かかります)、関数を最初からやり直し、無限にループさせたいと考えています。だから、私はいつものことを試しました:
setTimeout(function() {
greet(500);
}, 2500); // after 2500ms, repeat the function
気がつけば、2回ループすると「Hello」で止まります。どうしてこれなの?ここに私の問題を表示するフィドルがありますhttp://jsfiddle.net/rX6B/2/
どんな助けでも大歓迎です!
編集:
質問をするために、実際に問題を単純化しました。コードの大きな壁を投稿したくありませんでした (内部の html の変更は、実際には CSS 形状の配置の変更を伴う複雑な関数です)。私の問題は、最終的に関数のsetTimeout
内部に配置することで解決されました。回答ありがとうございます。