用.class写一个for循环:eq()

时间:2015-02-23 08:57:04

标签: javascript jquery

所以,我有一个包含15个链接的数组,我想将它们作为img src传递给我的html元素。我的元素都是阶级的。卡,我想我会写一个循环而不是硬编码(我必须用不同的链接做45次)。

所以它看起来像这样

var picks1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
for(x=0;x<picks1.length;x++) {
        $(".card:eq(x)").src = "picks1[x]";
    }

有没有办法像这样做?我认为这不起作用,因为.card:eq(x)的引号。 (有45个选择阵列,它们的长度从1到15变化)。还有另一种方法吗?

这是一个更大的网页的一部分,如果需要可以发布源代码,基本上是它读取另一个程序制作的日志文件,然后从第三方网站链接到图像并将它们放入数组中。

5 个答案:

答案 0 :(得分:2)

虽然以上所有答案都是正确的,但我认为缓存$('.card')的价值会更好

var picks1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
$(".card").slice(0, picks1.length).attr('src', function (i) {
    return picks1[i]
})

注意:如果.slice(0, picks1.length)$(".card")的长度相同,则不需要picks1

答案 1 :(得分:1)

假设你有一个pickArray有45个长度为1-15的数组。你可以写这样的

var i=0, length = pickArray.length, j=0, arrLen=0, arr;
  for(;i<length;i++){
    arr = pickArray[i];
    arrLen = arr.length;
    for(j=0;j<arrLen;j++) {
        $(".card:eq("+j+")").src = arr[j];
    }
 }

答案 2 :(得分:0)

您可以使用+ - 运算符将变量插入到选择器字符串中:

var picks1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
for(x=0;x<picks1.length;x++) {
    $(".card:eq(" + x + ")").src = picks1[x];
    // OR
    $(".card").eq(x).attr('src', picks1[x]);
}

答案 3 :(得分:0)

var picks1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
var cards = $(".card");
for (x = 0; x < picks1.length; x++) {
    cards.eq(x).attr('src', picks1[x]);
}

答案 4 :(得分:0)

您将picks1 [x]的值设置为字符串,尝试删除引号。使用以下代码

var picks1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
for(x=0;x<picks1.length;x++) {
        $(".card").eq(x).src = picks1[x];
    }

或者将它与attr()函数一起使用

$(".card").eq(x).attr('src',picks1[x]);

希望这有助于你