Node auslesen
Paul Eppner
- javascript
0 Bio0 wahsaga0 Thomas Meinike
kennt jemand ein script zum durchgehen und anzeigen aller knoten? bzw. wie greift ihr auf einen bestimmten knoten drauf zu? über id bringt bei mir nichts, da diese doppelt ist und ich sie eben umbenennen möchte. meine bisherige lösung geht über childNodes[x].childNodes[x] bis ich an der passenden stelle bin, dann hab ich aber noch das problem, das zwischen mozilla und ie da gravierende unterschiede sind. childNodes[3] ist unter IE z.b. childNodes[1]. kennt jemand gute lektüre dazu? und für den safari ist es nochmal anders :-/
gruß, paul
Sup!
Im Mozilla sind Zeilenumbrüche/Leerzeichen auch Nodes, im IE anscheinend nicht.
Wie kannst Du denn erkennen, ob Du den richtigen Node gefunden hast, wenn er keine ID hat?
Gruesse,
Bio
nein ich kopiere mir einen node mit clone-node. dieser node hat natürlich unterknoten mit ids eben. also kopiere ich den node, nenne dann gezielt die id um - mit dieser funktion:
function writeHTML() {
// write menu into html
this.stroutput.style.display = 'block';
if (this.stroutput.firstChild.childNodes[0].nodeName == '#text') {
popupChild = this.stroutput.firstChild.childNodes[1].childNodes[1].childNodes[1];
if (this.stroutput.firstChild.childNodes[1].childNodes[2].nodeName == 'TR') popupChild = this.stroutput.firstChild.childNodes[1].childNodes[2].childNodes[3];
else popupChild = this.stroutput.firstChild.childNodes[1].childNodes[1].childNodes[1];
} else popupChild = this.stroutput.firstChild.childNodes[0].childNodes[1].childNodes[1];
if (popupChild.getAttribute('id')) {
popupChild.setAttribute('id', 'p-'+popupChild.getAttribute('id'));
if (this.popupobj.hasChildNodes()) this.popupobj.replaceChild(this.stroutput, this.popupobj.firstChild);
else this.popupobj.appendChild(this.stroutput);
}
}
man sieht das ich für (ie, opera), (mozilla, firefox, netscape) und (safari) jeweils den knoten anders ansprechen muß :-/ gibt es für sowas kein script zum vereinfachen, oder muß ich überhaupt so durch den baum gehen, also mit childNodes usw.?
gruß, paul
hi,
über id bringt bei mir nichts, da diese doppelt ist und ich sie eben umbenennen möchte.
du scheinst dir also bewusst zu sein, dass doppelt vergebene IDs nicht erlaubt sind.
dann solltest du aber diesen fehler bereits HTML-seitig beseitigen - javascript kommt u.U. sowieso schon zu spät, weil wenn kein korrekter baum vorliegt.
gruß,
wahsaga
Hallo,
kennt jemand ein script zum durchgehen und anzeigen aller knoten? bzw. wie greift ihr auf einen bestimmten knoten drauf zu?
Vielleicht hilft das Script von Molily.
meine bisherige lösung geht über childNodes[x].childNodes[x] bis ich an der passenden stelle bin, dann hab ich aber noch das problem, das zwischen mozilla und ie da gravierende unterschiede sind. childNodes[3] ist unter IE z.b. childNodes[1]. kennt jemand gute lektüre dazu?
Es gibt Knoten-Eigenschaften wie nodeType, nodeName, nodeValue, die sich abfragen lassen. Eine hilfreiche Uebersicht von DOM-Techniken bietet PPK @ QuirksMode.
Dieses Beispieldokument zeigt auch einige Moeglichkeiten auf.
MfG, Thomas