2012-04-04 11 views
0

Ich habe ein Bilder-Array, in dem es eine Anzahl von Bildern gibt. Nicht festgelegt, kann eine oder zwei oder 8 sein, wenn ich Anzahl der Bilder festgelegt habe, dann war ich wie dieseBrauchen Sie Hilfe in Bezug auf das Erstellen von Logik, Hinzufügen von Eigenschaften zum Objekt

den Code etwas mit
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 

Aber jetzt habe ich Bilder in Array. Ich möchte, dass das Detailobjekt Bilder hinzugefügt hat, die der Anzahl der Bilder im Array entsprechen. Ich habe versucht, so etwas wie diese

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

Die Logik, die ich zu machen versuchen, wenn ich in dem Bilder-Array zwei Bilder habe das es so etwas wie diese

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

} 

werden soll, aber das funktioniert nicht. Natürlich meine Syntax ist falsch

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

Wie kann ich das tun?

Dank

+0

Warum nicht einfach es ein Array machen, anstatt ein Objekt mit dem Namen Eigenschaften? –

+0

Ich baue eine Bildergalerie. Wenn die Anzahl der Bilder festgelegt ist, war die Logik mit den Objekten. Jetzt versuche ich nur, die Dinge dynamischer als statisch zu machen. Also verwende ich die gleiche Logik, aber jetzt werden alle Variablen in Bezug auf die Anzahl der Bilder im Array gesetzt – Basit

+0

Aus Gründen der Übersichtlichkeit möchten Sie möglicherweise zu einem Array wechseln. Normalerweise würden Sie die 'obj [name]' - Syntax nur in Fällen verwenden, in denen Sie den Namen nicht im Voraus vorhersagen konnten. Hier folgen die Namen einem solchen regelmäßigen Muster, sie sagen Ihnen nichts über bestimmte Elemente und erschweren nur das Speichern und Abrufen einzelner Elemente. –

Antwort

0

Die korrekte Syntax ist: details['image' + index], die später durch details.image0 zugegriffen werden kann, details.image1 usw.

So soll es sein: details['image' + index] = {prop: val}

+0

Woops, zu spät. – powerbuoy

+0

es funktioniert nicht auch 'details ['bild' + index]: { position: position, titel: $ slideDiv.children(). Eq (index) .attr (" alt ") }' Der Fehler ist * * fehlt; vor Aussage ** on line 'Details ['Bild' + Index]: {' – Basit

+0

Es muss sein: 'Details ['Bild' + Index] = {prop: val}' – powerbuoy

1

In Javascript Sie eine Eigenschaft eine von zwei Arten zugreifen:

obj.property 

zu

entspricht
obj["property"] 

Also in Ihrem Fall sollten Sie es schreiben wie dies:

details["image"+index] 
Verwandte Themen