2017-06-18 64 views
0

我想在jQuery中創建一個函數,用無限循環顯示數組的內容。它可以正常工作 - 顯示公告1 - 2 - 1 - 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

使用遞歸看起來你在你的循環(常見的錯誤)有一個全局變量聲明。還沒有運行你的代碼,但看起來像延遲()完成後,我的值是2或數組的末尾。我猜測(讓我= 0; ...等)可能會做的伎倆。 – cheesenthusiast

回答

0

的問題是你是不是等待動畫繼續遞歸之前結束,遞歸調用在動畫的末尾添加回調。

$(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