2017-06-18 71 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