0

我有一个图像数组,其中有许多图像。不固定,可能是一个或两个或 8 个。当我有固定数量的图像时,我正在使用类似这样的代码

var details = {

    image1: {
        position: 0,
        title: $slideDiv.children().eq(0).attr("alt")
    },
    image2: {
        position: -400,
        title: $slideDiv.children().eq(1).attr("alt")
    },
    image3: {
        position: -800,
        title: $slideDiv.children().eq(2).attr("alt")
    },
    image4: {
        position: -1200,
        title: $slideDiv.children().eq(3).attr("alt")
    },
    image5: {
        position: -1600,
        title: $slideDiv.children().eq(4).attr("alt")
    }

}; //end of var details

但现在我有数组中的图像。我希望 details 对象在其中添加的图像等于数组中的图像数量。我尝试过这样的事情

var details = {};
var position = 0;
images.each(function(index){
    details.("image" + index) : {
        position: position,
        title: $slideDiv.children().eq(index).attr("alt")
    }

    position += -400;

}) ; //end of .each()

我试图做的逻辑是,如果我在图像数组中有两个图像,它应该变成这样

var details = {
    image1: {
        position: 0,
        title: $slideDiv.children().eq(1).attr("alt")
    },
    image2: {
        position: -400,
        title: $slideDiv.children().eq(2).attr("alt")
    }

}

但这不起作用。当然我的语法是错误的

details.("image" + index) : {..}

我怎样才能做到这一点?

谢谢

4

2 回答 2

1

在 Javascript 中,您可以通过以下两种方式之一访问属性:

obj.property

相当于

obj["property"]

所以在你的情况下,你会想这样写:

details["image"+index]
于 2012-04-04T04:59:41.743 回答
0

正确的语法是:details['image' + index]稍后可以通过details.image0等访问details.image1

所以应该是:details['image' + index] = {prop: val}

于 2012-04-04T05:04:03.830 回答