Was ist der eindeutige Bezeichner für ein DOM-element/Knoten
Ich bin durchqueren ein HTML-Dokument mit javascript-DOM. Ich möchte eine Liste (ein array eigentlich) von allen Knoten/Elemente und Ihre Werte. Gefunden habe ich ein Skript für die Traversierung des DOM, aber wie Speichere ich die einzelnen Knoten mit dem Wert in einem array. Ich kann nicht scheinen zu finden, die eindeutige id für einen Knoten. Jemand irgendwelche Hinweise? Ich dachte, der xpath
oder so etwas.
Ist es eine gute Idee zu prüfen xpath
für Knoten als den eindeutigen Bezeichner. Wenn ja, wie bekomme ich xpath
eines Elements beim Durchlaufen der DOM?
- Haben Sie sich überlegt, dass eine Liste aller Elemente und Werte ist der DOM?
- Nachdem Sie die Elemente in ein array, was sind Ihre Pläne? Wenn es zum Durchlaufen des Arrays, es wäre einfacher, einfach Durchlaufen des DOM.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Programmierer geboren und aufgewachsen in der Welt von C und C++, meine erste Antwort zu dieser Art Frage gewesen wäre "speichern Sie Ihre Adressen in das array!". Aber nach ein paar Jahren Herumspielen mit der web-Art der Dinge, ich kann die richtige Antwort:
In javascript, können Sie direkt speichern Sie die Referenzen, um die Objekte in das array.
Und Nein, xpath ist nicht eine gute Idee für diese; die Verwendung von Referenzen ist einfacher und besser.
Also eine direkte Antwort auf deine Frage ist: es gibt keine eindeutige Bezeichner für ein DOM-element/Knoten mit Ausnahme von selbst.
In javascript werden Objekte übergeben nach Verweis. Also hier ist ein Beispiel-code, wie es zu tun:
theNodeToTraverse
, und speichert Referenzen zu den Kind-DOM-Elemente intheArray
.element:value
, ist Ihre einzige option ist, um die Paare vonelement,value
in ein array, und führen Sie die lineare Suche jedes mal, wenn Sie etwas abrufen müssen. Einem einfachen JS-Objekt mit Adressen als Schlüssel würde erreicht haben O(1) - Abruf.{ [element]: value }
ecma-international.org/ecma-262/6.0/#sec-object-initializerKönnen Sie etwas ähnlich zu xpath mit so etwas wie dieses. Es durchläuft den dom nach oben aus dem input-element durch die parentNode-Eigenschaft.
https://gist.github.com/sebjwallace/3c0a6f7493ce23134516
Wird es ausgegeben wird ein string wie dieser.
"#document/HTML/BODY/DIV"