objekt im dom ermitteln
marcus
- javascript
hallo zusammen,
ich möchte per javascript diverse elemente der webseite erfassen und deren typ etc. speichern.
danach will ich per javascript über die gespeicherten daten das erfasste objekt suchen und markieren (border o.ä.).
mein ansatz war jetzt, dass ich mich von dem zu erfassenden objekt im dom tree nach ganz oben hangel und somit praktisch eine "spur" habe, der ich später nur umgekehrt folgen muss. vom ansatz her erschien mir der index des obekts am sinnvollsten. das ergebnis sah dann ungefähr so aus:
0|0|1|15|3|1
im zweiten schritt konnte ich mich von der HTML-node wieder nach unten hangeln, indem ich den jeweiligen index der ebene benutzt habe und mir davon dann das jeweilige childnode geholt habe... voila, ich hatte mein gesuchtes element.
dann hab ich das mal unter IE ausprobiert und durfte feststellen, dass FF und IE ein unterschiedliches DOM-modell benutzen, wodurch meine index-werte nicht mehr funktionieren (werden in der DB gespeichert und später wieder hervorgeholt). angenommen das anlegen der "index-spur" wurde unter IE vorgenommen, kann ich mit den werten unter FF nichts anfangen und umgekehrt.
der nächste gedanke war, dass ich über den nodeName gehe, der ist mir aber zu ungenau, weil meine objekte nicht alle eine eindeutige ID haben und der nodeName "div" auf einer ebene ja mehrfach vorkommen kann.
so, jetzt gehen mir langsam die ideen aus und da wollte ich mal fragen, ob jemand einen ansatzpunkt hat, wie ich unter beiden browsern elemente der seite (nur form-elemente und links) erfassen und unter einem beliebiegen browser nachträglich wiederfinden kann....
vielen dank im voraus
gruß
marcus
hi,
dann hab ich das mal unter IE ausprobiert und durfte feststellen, dass FF und IE ein unterschiedliches DOM-modell benutzen, wodurch meine index-werte nicht mehr funktionieren (werden in der DB gespeichert und später wieder hervorgeholt). angenommen das anlegen der "index-spur" wurde unter IE vorgenommen, kann ich mit den werten unter FF nichts anfangen und umgekehrt.
Das hättest du auch vorher schon der Beschreibung zu childNodes entnehmen können.
der nächste gedanke war, dass ich über den nodeName gehe, der ist mir aber zu ungenau, weil meine objekte nicht alle eine eindeutige ID haben und der nodeName "div" auf einer ebene ja mehrfach vorkommen kann.
Du könntest das "Durchzählen" mit dem Tagnamen kombinieren - statt childNodes dann eben getElementsByTagName verwenden (Index-Ermittlung muss dann aber natürlich auch darauf ausgerichtet sein).
so, jetzt gehen mir langsam die ideen aus und da wollte ich mal fragen, ob jemand einen ansatzpunkt hat, wie ich unter beiden browsern elemente der seite (nur form-elemente und links) erfassen und unter einem beliebiegen browser nachträglich wiederfinden kann....
Nur Form-Elemente und Links?
Herrje, sag das doch gleich - für beide existieren doch per se schon NodeLists, document.forms und document.links, da kannst du also gleich wieder mit deinem Durchzählen arbeiten.
Allerdings stellt sich mir doch die Frage, wozu man einerseits öfters auf Elemente zugreifen können müssen sollte, dies aber andererseits keine eindeutige Kennzeichnung der Elemente per ID rechtfertigen sollte.
Da scheint bereits der Aufbau irgendwie suboptimal.
gruß,
wahsaga
hallo wahsaga,
Das hättest du auch vorher schon der Beschreibung zu childNodes entnehmen können.
nu is zu spät :-)
Du könntest das "Durchzählen" mit dem Tagnamen kombinieren - statt childNodes dann eben getElementsByTagName verwenden (Index-Ermittlung muss dann aber natürlich auch darauf ausgerichtet sein).
klappt nicht, weil ich für "getElementsByTagName" ja nicht immer einen passenden Namen liefern kann :-( ...kann also nur über die Nodes gehen.
Herrje, sag das doch gleich - für beide existieren doch per se schon NodeLists, document.forms und document.links, da kannst du also gleich wieder mit deinem Durchzählen arbeiten.
Das wäre zu einfach, denn beim Erfassen der Elemente arbeite ich mit einem Click-Event... wie schlage ich die Brücke von meinem Event-Objekt zum Link-Array? Einfach die Liste iterieren und die hrefs vergleichen geht nicht, der gleiche Link könnte mehrfach auftreten...
Allerdings stellt sich mir doch die Frage, wozu man einerseits öfters auf Elemente zugreifen können müssen sollte, dies aber andererseits keine eindeutige Kennzeichnung der Elemente per ID rechtfertigen sollte.
Da scheint bereits der Aufbau irgendwie suboptimal.
Leider richtig, aber Du weisst ja, Kunde ist König :-)
Gruß
Marcus
Hi,
klappt nicht, weil ich für "getElementsByTagName" ja nicht immer einen passenden Namen liefern kann :-( ...kann also nur über die Nodes gehen.
ändere die Gravitationskonstante des Universums und gehe nur über die Elements statt über alle Nodes. Das ist zwar nicht trivial mit nextSibling möglich, aber dennoch implementierbar.
Leider richtig, aber Du weisst ja, Kunde ist König :-)
Ich arbeite gerade mit einem Kunden, der den Namen König trägt. Darüber hinaus bin ich als Fachmann aber des Monarchen Berater, der traditionell schon immer das Sagen hatte.
Cheatah
Hi,
wie schlage ich die Brücke von meinem Event-Objekt zum Link-Array? Einfach die Liste iterieren und die hrefs vergleichen geht nicht, der gleiche Link könnte mehrfach auftreten...
Vergleich halt die Objekte selbst.
Gruß, Cybaer