2017-06-18 9 views
0

配列の内容を示す無限ループでjQueryで関数を作成しようとしています。アラートでうまくいきます - アナウンス1 - 2 - 1 - 2などが表示されます。しかし、アニメーションを追加しようとすると、2番目のアナウンスだけが表示されます。jQueryで無限ループの配列を持つ関数

誰かが私を助けることができますか?

$(document).ready(function() { 
    var announcements = ["<p>announcement 1<\/p>","<p>announcement 2<\/p>"]; 
    function showArrayOfAnnouncements() { 
     for (i = 0; i<announcements.length; i++) { 
// works very well: 
     alert (announcements[i]); 
// doesn't work: 
//   $("#french_announcements").html(announcements[i]).hide().slideDown(500).delay(2000).slideUp(500); 
    } 
    showArrayOfAnnouncements(); 
} 
showArrayOfAnnouncements(); 

}); 
+1

無限ループ – Nayish

+0

で再帰を使用することは非常に悪いが見えます。あなたのコードを実行していないが、遅延()が終了したように見えるiの値は2または配列の終わりです。私は推測している(私は= 0; ...など)トリックを行う可能性があります。 – cheesenthusiast

答えて

0

問題は、アニメーションがアニメーションの最後にコールバックへの再帰呼び出しを追加し、再帰を続行する前に終了するためにあなたが待っていないです。あなたのループ(よくある間違い)でグローバルのvar宣言を持っているよう

$(document).ready(function() { 
    var announcements = ["<p>announcement 1<\/p>","<p>announcement 2<\/p>"]; 
    function showArrayOfAnnouncements(i) { 
     alert (announcements[i]); 
     $("#french_announcements").html(announcements[i]).hide().slideDown(500).delay(2000).slideUp(500,() => showArrayOfAnnouncements((i+1) % announcments.length); 
    } 
    showArrayOfAnnouncements(0); 
}); 
+0

私はタイプミスを修正しましたが、動作しません。それを試していただけますか? – easypronunciation

+0

修正されました。今すぐやってみて下さい。 – Nayish

関連する問題