JavaScript json.parse Name eines Elementes übergeben?

S.Kara

Captain
Registriert
Okt. 2013
Beiträge
3.725
Code:
var elements = document.getElementById('sel');

for (i = 0; i < elements.length; i++) {
	var x = JSON.parse(elements[i].id);
	...
}
Beim parse beschwert er sich. Ich nehme an er interpretiert es als String.
In meiner .json-Datei gibt es Einträge die genau so heißen wie die id's.

Wenn ich es direkt eingebe funktioniert es:
var x = JSON.parse(xyz);

Da muss es doch etwas geben um es so wie in der Schleife zu machen?
 
Kann ein wenig am Schlafmangel liegen, aber ich versteh den Sinn nicht ganz. 'elements' enthält entweder null oder nur das erste Element mit der id 'sel'. Wozu also eine Schleife und überhaupt das holen des Elements via getElementById, wenn du dann sowieso wie in diesem Fall z.bsp. JSON.parse(sel) aufrufen willst?
 
Zuletzt bearbeitet:
Mal davon abgesehen, dass Ids, wie der Name schon nahelegt, eindeutig sein sollten.

Und wie mein Vorredner bereits geschrieben hat, elements.id ist natürlich 'sel'. Dass das kein gültiges Json ist, sollte klar sein. Lass mal das .id weg.

Sauberer wäre, du überarbeitest deine HTML Elemente, vergibst echte Ids und selektierst über Attribute, die mehrfach vorkommen dürfen z.B. name oder data-abc.
 
Zuletzt bearbeitet:
Nein der Code stimmt schon. Wenn ich die Zeile mit dem parse durch
Code:
alert(elements[i].id);

ersetze, werden mir nach und nach alle Namen der Elemente von "sel" ausgegeben.
Code:
Sel_1
Sel_2
Sel_3
Sel_4
Sel_5

In der json-Datei steht dann z.B:
Code:
Sel_1 = '[{"x" : "y"}]';
 
Das Problem werden die eckigen Klammern sein. Die haben da eigentlich nichts verloren, ist ja kein Array und ein JSON-String beginnt mit geschweifter Klammer.

deshalb auch die FM mit "unexpected character"
 
Zuletzt bearbeitet:
Ist halt ein Array der Länge 1, daran liegt es nicht.
Habe auch schon ohne getestet.

Ich habe das ganze jetzt in ein Array gepackt, somit muss ich immer auf das selbe json-Element zugreifen und kann den Namen direkt im Code stehen lassen.
Danke an alle Helfer.
 
Zurück
Oben