我的网站上有一堆推荐信,目前正在页面上,我试图让div以5秒的间隔显示每个1,如果数组达到最后一个值,它应该重新开始数组再次。
这是我到目前为止所拥有的......
var testimonial = new Array();
testimonial[1] = "Rugby";
testimonial[2] = "Baseball";
testimonial[3] = "Cricket";
var length = testimonial.length
var i = 1;
setInterval(function() {
while (i <= length) {
$('#testimonials p').html(testimonial[i]);
++i;
if (i == length) {
i == 1;
}
}
}, 5000);
任何帮助都会很棒,谢谢。
答案 0 :(得分:19)
尝试
var testimonial = ['Rugby', 'Baseball', 'Cricket'];
var numTestimonials = testimonial.length;
var index = 0;
setInterval(function() {
$('#testimonials p').text(testimonial[index]);
index = (index + 1) % numTestimonials;
}, 5000);
JavaScript数组是0索引的并且具有方便的数组文字语法。使用模数运算符(%
)是将计数器一旦达到某个值就将其包装回0的惯用方法。
答案 1 :(得分:0)
你可以尝试
setInterval(function() {
$('div').html(test[ (i = (i + 1) % length) ]) },
5000);
答案 2 :(得分:0)
setInterval中的函数每5秒调用一次。这意味着你可以每5秒钟一个接一个地显示5个推荐书,而不是一个接一个地显示它们。
您应该执行以下操作:
var testimonial = new Array();
testimonial[1] = "Rugby";
testimonial[2] = "Baseball";
testimonial[3] = "Cricket";
var length = testimonial.length
var i = 0; // arrays start with 0
setInterval(function() {
$('#testimonials p').html(testimonial[i]);
i++;
if (i == length) i = 0;
}, 5000);
答案 3 :(得分:0)
许多有趣的答案,所以还有一个不会受到伤害。 : - )
您可以将其全部捆绑在一个立即调用的函数表达式中:
(function() {
var testimonials = ['Rugby', 'Baseball', 'Cricket'];
var i = 0;
setInterval(function() {
$('#testimonials p').text(testimonials[++i % testimonials.length]);
}, 5000);
}());