Was ist der Unterschied zwischen innerHTML
, innerText
und childNodes[].value
in JavaScript?
javascript
dom
user2819851
quelle
quelle
innerText
einer nicht standardmäßigen Implementierung von textContext durch MSIE nicht trivial.innerText
wurde zu den Standards hinzugefügt und von allen gängigen Browsern unterstützt.textContent
wird jetzt von IE> = 9 unterstützt und kanninnerText
in den meisten Fällen anstelle von verwendet werden (Bonus, es ist viel schneller), aber es gibt Unterschiede zwischen den beiden, so dass Sie sie in einigen Fällen nicht austauschen können.innerText
wird in allen Browsern gut unterstützt. Firefox begann ab Version 45 mit der Unterstützung. Caniuse.com/#search=innertextinnerHTML
ist eine bekannte Sicherheitslücke für XSS-Angriffe. Das heißt,innerText
ist auch nicht 100% sicher. stackoverflow.com/questions/52707031/does-innertext-prevent-xss blog.cloudboost.io/…Antworten:
Im Gegensatz zu
innerText
, obwohl,innerHTML
können Sie mit HTML Rich Text arbeiten und nicht automatisch kodieren und dekodieren Text. Mit anderen Worten,innerText
ruft den Inhalt des Tags abinnerHTML
und legt ihn als einfachen Text fest, während der Inhalt im HTML-Format abgerufen und festgelegt wird.quelle
Die folgenden Beispiele beziehen sich auf das folgende HTML-Snippet:
Der Knoten wird von folgendem JavaScript referenziert:
element.innerHTML
Legt die HTML-Syntax fest oder ruft sie ab, die die Nachkommen des Elements beschreibt
Dies ist Teil der DOM-Analyse- und Serialisierungsspezifikation des W3C . Beachten Sie, dass es eine Eigenschaft von
Element
Objekten ist.node.innerText
Legt den Text zwischen den Start- und End-Tags des Objekts fest oder ruft ihn ab
innerText
wurde von Microsoft eingeführt und für eine Weile von Firefox nicht unterstützt. Im August 2016innerText
wurde von der WHATWG übernommen und in Version 45 zu Firefox hinzugefügt.innerText
gibt Ihnen eine stilbewusste Darstellung des Textes, der versucht, mit dem übereinzustimmen, was vom Browser gerendert wird. Dies bedeutet:innerText
gilttext-transform
undwhite-space
RegelninnerText
schneidet Leerzeichen zwischen Zeilen ab und fügt Zeilenumbrüche zwischen Elementen hinzuinnerText
gibt keinen Text für unsichtbare Elemente zurückinnerText
wirdtextContent
für Elemente zurückgegeben, die niemals wie<style />
und ` gerendert werdenNode
Elementennode.textContent
Ruft den Textinhalt eines Knotens und seiner Nachkommen ab oder legt diesen fest.
Dies ist zwar ein W3C-Standard , wird jedoch von IE <9 nicht unterstützt.
Node
Elementennode.value
Dieser hängt von dem Element ab, auf das Sie abgezielt haben. Gibt im obigen Beispiel
x
ein HTMLDivElement- Objekt zurück, für das keinevalue
Eigenschaft definiert ist.Eingabe-Tags (
<input />
) definieren beispielsweise einevalue
Eigenschaft , die sich auf den "aktuellen Wert im Steuerelement" bezieht.Aus den Dokumenten :
Beispielskript
Hier ist ein Beispiel, das die Ausgabe für den oben dargestellten HTML-Code zeigt:
quelle
innerText
: quirksmode.org/dom/html und quirksmode.org/dom/tests/innerhtml.htmlFirefox >=45
wird unterstützt.innerText
ist es jetzt Teil des Standards und sollte ab Version 45 von Firefox unterstützt werden. Vielleicht Grund für ein Update dieser großartigen Antwort @faraz<
zu<
,>
zu>
, etc.InnerText
Die Eigenschaft html kodiert den Inhalt, wendet sich<p>
an<p>
usw. Wenn Sie HTML-Tags einfügen möchten, müssen Sie diese verwendenInnerHTML
.quelle
In einfachen Worten:
innerText
zeigt den Wert unverändert an und ignoriert eventuell enthalteneHTML
Formatierungen.innerHTML
zeigt den Wert an und wendet alleHTML
Formatierungen an.quelle
Verwenden Sie einen anderen .childNodes [1], um ihn weiter zu verfeinern und beispielsweise den Wert Alec abzurufen.
quelle
In Bezug auf erzeugt die
MutationObservers
EinstellunginnerHTML
einechildList
Mutation, da die Browser den Knoten entfernen und dann einen neuen Knoten mit dem Wert von hinzufügeninnerHTML
.Wenn Sie festlegen
innerText
, wird einecharacterData
Mutation generiert.quelle
Der einzige Unterschied zwischen
innerText
undinnerHTML
besteht darin, dassinnerText
die Zeichenfolge so wie sie ist in das Element eingefügt wird, währendinnerHTML
sie als HTML-Inhalt ausgeführt wird.quelle
InnerText
Gibt nur den Textwert der Seite mit jedem Element in einer neuen Zeile im Klartext zurück, währendinnerHTML
der HTML-Inhalt aller Elemente imbody
Tag zurückgegeben wird undchildNodes
eine Liste der Knoten zurückgegeben wird, wie der Name schon sagt.quelle
Die
innerText
Eigenschaft gibt den tatsächlichen Textwert eines HTML-Elements zurück, während dieinnerHTML
den Wert zurückgibtHTML content
. Beispiel unten:quelle
Um der Liste hinzuzufügen, behält innerText Ihre Texttransformation bei, innerHTML nicht
quelle