2016-05-18 5 views
0

Das ist wahrscheinlich eine einfache Antwort, aber ich lerne immer noch so hier gehe ich. Ich habe einen Objektfarbton, den Sie unten sehen können. Ich habe auch ein HTML-Wertelement, das ich versuche, den Wert zu teilen und es in mein Objekt zu legen.Einfaches Hinzufügen von Teilvariablen in Objekt?

Allerdings versucht es, zu shade.color.fill hinzuzufügen, die nicht austritt, ich brauche es stattdessen zu shade.color.cord hinzuzufügen.

value="type|Color" 

Javascript

var obj = { 
    color: { 
     Type: null 
    } 
} 

var fill = this.getAttribute('value').split("|"); 
shade.color.fill[0] = fill[1]; 
console.log(obj.type.color); 

Fehler:

TypeError: obj.type.fill is undefined 
+0

'fi ll [0] = cord' also wird Ihr Wert 'shade.color.cord' zugewiesen und Sie greifen auf' shade.color.fill' zu, was Ihnen 'undefined' als Fehler gibt – Apb

+0

@Apb Sie sind richtig, wie auch immer ich bin versuchen, den Wert fill [1] in das Objekt shade.color.cord und cord einzufügen, sollte der Wert von fill [0] sein – Elevant

+0

Ja. Was ist das Problem? – Apb

Antwort

2

Wenn Sie tun, was ich denke, was Sie tun müssen, sollte dies im Gegensatz arbeiten (Verwendung eckige Klammer-Notation Notation Punkt um den Namen dynamisch zu setzen):

var shade = { 
    color: { 
     cord: null 
    } 
} 

var fill = this.getAttribute('value').split("|"); 
shade.color[fill[0]] = fill[1]; 
console.log(shade.color.cord); 
+0

Perfekter Dank, was ist der Unterschied zwischen der Quadrat- und der Punktnotation? – Elevant

+0

@Elevant Die Square-Klammer-Notation akzeptiert einen String-Wert als Schlüssel, während die Punkt-Notation den Namen explizit akzeptiert. Da Sie den Namen aus einem String-Wert setzten, benötigten Sie eckige Klammern. –

Verwandte Themen