Jquery循环遍历数组 - 必须有更好的方法

时间:2012-03-21 19:02:05

标签: javascript jquery arrays

我看过类似这个问题的问题,过去几天我读过并重读了这些问题。我只是不知道我是否正确地这样做(我非常怀疑我是)以及如何从这里得到正确的方法。基本上我有一个完整的图像阵列,我想循环。它工作但由于某种原因,c的值连续两次为零。

function slider_plus() {
    var imgs = imgArr.length;

    a++;
    var b = a - 1;
    var c = a + 1;

    if (a >= imgs) {
        a = 0;
    }
    if (b < 0) {
        b = imgs - 1;
    }
    if (c >= imgs) {
        c = 0;
    }
    $("#varsDiv").html(" var b = " + b + " var a = " + a + " var c = " + c);
    $("#basic_ul").html(imgArr[b] + imgArr[a] + imgArr[c]);
}

换句话说,每次调用函数时,c的值都应该增加。但是当这些是重复调用函数的结果时:2 3 0 0 1 2 3 0 0 1 2 3 0 0 ...依此类推。我需要它只是:2 3 0 1 2 3 0 1.我100%肯定有更好的方法来做到这一点,但我是一个菜鸟,这是我已经得到... < / p>

2 个答案:

答案 0 :(得分:2)

对代码的快速修复是在设置和调整a和{{1的值之前调整imgs(在&gt; = b时将其设置为0) }}。现在当c循环时你将它和a都设置为0,我认为这不是你想要的。

您可能还想阅读模数运算符c。它可以让你更容易“包裹”这些值。

%

尽管如此,你仍然需要抓住a %= imgs // will set a to 0 when it equals imgs 的-1个案例。

答案 1 :(得分:0)

你的意思是这样吗?

var a = 0;
function slider_plus() {
    var imgs = imgArr.length;
    $("#basic_ul").html(imgArr[a++ % imgs] + imgArr[a % imgs] + imgArr[(a+1) % imgs]);
}