【问题标题】:How to loop an array on jquery如何在jquery上循环数组
【发布时间】:2014-04-08 13:14:53
【问题描述】:

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

诚然,我对 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/

【问题讨论】:

  • 你的小提琴似乎在工作。你到底需要什么?
  • @BasitSaeed,它没有循环播放。它只循环一次。
  • @BasitSaeed 它停在数组的最后一个变量上:

标签: javascript jquery infinite-loop


【解决方案1】:

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

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

【讨论】:

  • 我认为我从未见过这种语法。不错(我认为)。
  • 它只是一个命名的IIFE和一个三元,没有魔法,但乍一看可能有点“奇怪”?
  • 是的。如果你想随机化,这里有一个选项jsfiddle.net/5s8y3/221
  • 我想这看起来很奇怪,因为i=0 : i++ 正在返回i 并不明显,而不仅仅是设置它。
  • 非常感谢您的回答和解释
【解决方案2】:

编辑:我只是想出了你真正想要的。

只要放一个全局变量:

var i = 0;

现在,将其添加到您的 change() 函数中:

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

这部分代码,将循环遍历你的数组,并在到达末尾时返回开头。

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

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

【讨论】:

  • 感谢@sebj 的帮助 :)
【解决方案3】:

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

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

【讨论】:

  • 非常感谢您的详细解释!对我这样的学习者很有帮助!非常感谢!
【解决方案4】:

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);

};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    相关资源
    最近更新 更多