2012-04-04 38 views
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 

但現在我有在陣列的圖像。我希望細節對象添加的圖像等於數組中的圖像數量。我想是這樣的

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) : {..} 

我該怎麼做?

感謝

+0

爲什麼不只是讓一個數組,而不是命名屬性的對象? – 2012-04-04 05:21:59

+0

我正在建設圖片庫。當圖像的數量是固定的,然後邏輯與對象。所以現在我只是想把事情變成動態的而不是靜態的。所以我使用相同的邏輯,但現在所有的變量都相對於陣列中的圖像數量進行設置 – Basit 2012-04-04 05:28:17

+0

爲了清晰起見,您可能需要切換到數組。通常,只有在您無法預先預測名稱的情況下,纔會執行'obj [name]'語法。這裏的名稱遵循這樣的規則模式,它們實際上並沒有告訴你任何有關特定元素的信息,並且使得單個元素的存儲和檢索變得複雜。 – 2012-04-04 05:40:01

回答

0

正確的語法是:details['image' + index]可以在以後通過details.image0訪問,details.image1

所以它應該是:details['image' + index] = {prop: val}

+0

Woops,爲時已晚。 – powerbuoy 2012-04-04 05:04:28

+0

它也無法正常工作'details ['image'+ index]:{ position:position, title:$ slideDiv.children()。eq(index).attr(「alt」) }錯誤是* *失蹤 ;之前的語句**在線'detail ['image'+ index]:{' – Basit 2012-04-04 05:07:44

+0

它需要:'details ['image'+ index] = {prop:val}' – powerbuoy 2012-04-04 05:09:06

1

在Javascript中,你可以訪問屬性的方式有兩種:

obj.property 

相當於

obj["property"] 

所以你的情況,你會希望把它寫像此:

details["image"+index]