不断循环javascript数组并将结果显示给div?

时间:2011-11-24 05:30:51

标签: javascript arrays loops

我的网站上有一堆推荐信,目前正在页面上,我试图让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);

任何帮助都会很棒,谢谢。

4 个答案:

答案 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);
}());