2016-04-08 5 views
0

Ich versuche, einen neuen Wert in eine Eigenschaft eines Array-Elements mit dieser Funktion einzufügen.Erhalte einen undefinierten Fehler, kann aber einen Alarm ausgeben

function updateLabel (e) { 
    var labelRow = e.parentNode.parentNode.rowIndex; 
    var fieldPosition = labelRow + 1; 
    var index = labelRow -1; 
    var newLabel = document.getElementsByTagName('input')[fieldPosition].value; 

    alert(newLabel); 

    xyarr[xyarr.index].label = newLabel; 


} 

Wenn ich alert (newLabel); Es meldet den Wert, den ich speichern möchte, aber wenn ich die letzte Zeile der Funktion erreiche, erhalte ich den Fehler: Uncaught TypeError: Kann die Eigenschaft 'label' nicht definieren

+0

'xyarr [xyarr.index] = {label: newLabel};' – Paulpro

+0

@Paulpro, die ein nicht definiertes Objekt ist die Schaffung in meinem Array. –

+0

Wie sieht Ihr xyarr Array aus? – sihao

Antwort

2

Ich sehe nicht, wo xyarr.index definiert ist. Meinst du stattdessen index? Die Fehlermeldung "Kann die Eigenschaft 'Label' von 'undefined' nicht festlegen, scheint anzuzeigen, dass das Objekt, das Sie versuchen, von Ihrem Array (d. H. xyarr[xyarr.index]) abzurufen, nicht definiert ist.

Sie können auch versuchen, die folgende Indexer Syntax Ihrer Eigenschaft als auch zu versuchen, Einstellung:

xyarr[index]['label'] = newLabel; // or xyarr[xyarr.index]['label'] = newLabel; 
+0

Das funktioniert! Danke, es würde dir nichts ausmachen zu erklären, wie ich xyarr.index definieren könnte? –

+0

Ich glaube nicht, dass Sie es definieren müssen. Es könnte nur ein Tippfehler für Sie gewesen sein. Andernfalls möchten Sie wahrscheinlich eine Klasse erstellen, die ein Array ('xyarr') und eine weitere Eigenschaft zum Speichern Ihres' index' speichert. Es ist jedoch wahrscheinlich, dass Sie das nicht benötigen würden, da Ihr aktueller Code ausreichend erscheint. –

Verwandte Themen