DOM Element by atttribute value
Steffen M.
- javascript
0 LX0 ChrisB0 LX
0 Steffen M.
Hallo,
ich habe eine XML Datei. Ich moechte via DOM auf ein Element mit einem bestimmten Attribute Wert zugreifen. Die XMLDatei sieht vereinfacht so aus:
<root>
<list id="haupt-liste">
<item value="xyx" label="X Y X Label"/>
<item value="yyx" label="Y Y X Label"/>
</list>
</root>
Mein Versuch war wie folgt:
function something() {
var ListKnoten = document.getElementById('haupt-liste');
var ItemKnoten = ListKnoten.childNodes[this.value == 'yyx'];
alert(ItemKnoten.getAttribute('label'));
}
Kann mir jemand weiterhelfen, wie ich den Knoten mittels dem attribute wert adressieren kann?
Gruss, Steffen
Hallo!
var ItemKnoten = ListKnoten.childNodes[this.value == 'yyx'];
Netter Versuch, aber das DOM an sich kennt keine solchen Selections. Wenn Du nicht gerade ein JS-Toolkit verwendest, das diese Fähigkeiten nachliefert, wirst Du auf manuelles Parsing angewiesen sein, um mit allen Browsern kompatibel zu bleiben:
for (var n=0; n < ListKnoten.childNodes.length; n++) {
if (ListKnoten.childNodes[n].value == 'yyx') {
var ItemKnoten = ListKnoten.childNodes[n];
}
}
Gruß, LX
Hi,
var ItemKnoten = ListKnoten.childNodes[this.value == 'yyx'];
Netter Versuch, aber das DOM an sich kennt keine solchen Selections.
Wenn ich mich nicht irre, müsste im vorherigen Schritt schon das getElementById scheitern, weil id in XML per se erst mal ein Attribut wie jedes andere ist.
Da müsste schon als xml:id verwendet werden, damit das identifizierende Funktion bekommt.
MfG ChrisB
Nicht alles, was invalide ist, wird auch von den Browsern unterlassen ;-)
Aber Du hast schon Recht, ein vernünftiger XMLDOM-Parser kann das besser.
Gruß, LX
Besten Dank!!
das funktioniert mit einer kleinen Abwandlung.
Vielen Dank.