如何在jquery上循环数组

时间:2014-04-08 13:14:54

标签: javascript jquery infinite-loop

我一直在尝试制作一个脚本来更改跨度的文本。

不可否认,我对jQuery并不是很了解并找到了一个脚本。我编辑了我,但我不能让脚本循环,我不知道从哪里开始。任何代码提示或相关文档的链接将不胜感激。

到目前为止,这是jQuery:

function change() {
        $('#msg').html(options.pop()).fadeIn(750).delay(2000).fadeOut(750, change);
};

var options = [
    "Red Bull",
    "Smoke",
    "Babes",
    "css",
    "batman"
].reverse(); 
change();

在jsfiddle:http://jsfiddle.net/5s8y3/214/

4 个答案:

答案 0 :(得分:5)

停止弹出数组并使用迭代器

var messages = [
    "Red Bull",
    "Smoke",
    "Babes",
    "css",
    "batman"
],
    i = 0;

(function change() {
    var msg = messages[i>messages.length-1 ? i=0 : i++];
    $('#msg').html(msg).fadeIn(750).delay(2000).fadeOut(750, change);
})();

FIDDLE

答案 1 :(得分:2)

编辑:我只想到你真正想要的东西。

只需输入一个全局变量:

var i = 0;

现在,将其添加到您的change()功能:

if(i < messages.length){
    i++;
}
else{
    i = 0;
}

这部分代码将遍历yout数组,并在它到达结尾时返回到开头。

然后,将messages.pop()更改为messages[i]

这是JSFiddle:http://jsfiddle.net/5s8y3/220/

答案 2 :(得分:2)

问题是Array.pop会从数组中删除该元素,因此一旦它已经通过您的消息列表,一旦没有更多的条目,它就会开始抛出错误。要使其连续循环,请将新删除的消息添加到数组的前面:

function change() {
    var message = messages.pop();
    messages.unshift(messages);
    $('#msg').html(message).fadeIn(750).delay(2000).fadeOut(750, change);
};

答案 3 :(得分:1)

pop()将从数组中删除该值。因此,它适用于一个完整的周期。之后该数组为空。因此,它显示空白值。实际上它在循环中工作。

var messages = [
    "Red Bull",
    "Smoke",
    "Babes",
    "css",
    "batman"
].reverse();

var i = messages.length;
function change() {
        i=(i%messages.length);
        $('#msg').html(messages[i++]).fadeIn(750).delay(2000).fadeOut(750, change);

};