Javascript: Ich habe die DOM-Darstellung eines Knotens (Elements oder Dokuments) und suche nach der Zeichenfolgendarstellung davon. Z.B,
var el = document.createElement("p");
el.appendChild(document.createTextNode("Test"));
sollte ergeben:
get_string(el) == "<p>Test</p>";
Ich habe das starke Gefühl, dass mir etwas trivial Einfaches fehlt, aber ich finde einfach keine Methode, die in IE, FF, Safari und Opera funktioniert. Daher ist OuterHTML keine Option.
javascript
string
dom
cross-browser
element
Boldewyn
quelle
quelle
Antworten:
Sie können einen temporären übergeordneten Knoten erstellen und dessen innerHTML-Inhalt abrufen:
EDIT: Siehe Antwort unten über OuterHTML. el.outerHTML sollte alles sein, was benötigt wird.
quelle
document.documentElement
in ein Div einfügen ? Heiliger Mist ....element
bevor Sie sie hinzufügen,tmp
da sie beim Hinzufügentmp
entfernt wirddocument
.Was Sie suchen, ist 'OuterHTML', aber wir brauchen einen Fallback, da es nicht mit alten Browsern kompatibel ist.
Mein jQuery-Plugin finden Sie hier: Holen Sie sich das äußere HTML des ausgewählten Elements
quelle
outerHTML
in Version 11 hinzugefügt , nachdem ich die Frage gestellt hatte. Das war damals also keine Option. Ich habe meine Frage sogar mit einem entsprechenden Kommentar aktualisiert, wenn Sie genau hinschauen.innerHtml
innerHTML
. )outerHTML
Attribut nicht. Siehe auch caniuse.com/#feat=xml-serializerIch glaube nicht, dass Sie dafür ein kompliziertes Skript benötigen. Benutz einfach
quelle
Unter FF können Sie das
XMLSerializer
Objekt verwenden, um XML in eine Zeichenfolge zu serialisieren. IE gibt Ihnen einexml
Eigenschaft eines Knotens. Sie können also Folgendes tun:quelle
.xml
funktioniert nicht auf DOM-Knoten (wie bei Knoten auf der aktuellen Seite). Es funktioniert nur auf XML-DOM-Dokumentknoten.outerHTML
funktioniert umgekehrt nicht auf XML-DOM-Dokumentknoten. Es funktioniert nur auf DOM-Knoten (wie bei Knoten auf der aktuellen Seite). Gute Konsistenz dort würde ich sagen.Verwenden Sie Element # OuterHTML:
Es kann auch zum Schreiben von DOM-Elementen verwendet werden. Aus Mozillas Dokumentation:
https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML
quelle
Verwenden Sie element.outerHTML, um eine vollständige Darstellung des Elements einschließlich der äußeren Tags und Attribute zu erhalten.
quelle
Wenn Ihr Element übergeordnet ist
quelle
<li>
in einer Liste.Versuchen
quelle
Ich habe festgestellt, dass ich für meine Anwendungsfälle nicht immer die gesamte äußere HTML möchte. Viele Knoten haben einfach zu viele Kinder, um sie anzuzeigen.
Hier ist eine Funktion (minimal in Chrome getestet):
https://gist.github.com/kahunacohen/467f5cc259b5d4a85eb201518dcb15ec
quelle
Ich habe viel Zeit damit verschwendet, herauszufinden, was falsch ist, wenn ich DOMElements mit dem Code in der akzeptierten Antwort durchlaufe. Das hat bei mir funktioniert, sonst verschwindet jedes zweite Element aus dem Dokument:
quelle
document.getElementsByTagName()
, ändert sich diese Sammlung in der Mitte derfor
Schleife, sodass jedes zweite Element übersprungen wird.bei Verwendung reagieren:
quelle
.outerHTML
ist nicht reaktionsspezifisch; Es ist ein DOM-Standard. Schauen Sie sich die Antwort von @Rich Apodaca an.reactdom.findDOMNode()
..., nicht der.outerHTML
, aber danke für die Position.