Die folgenden Beispiele beziehen sich auf das folgende HTML-Snippet:
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
Der Knoten wird von folgendem JavaScript referenziert:
var x = document.getElementById('test');
element.innerHTML
Legt die HTML-Syntax fest oder ruft sie ab, die die Nachkommen des Elements beschreibt
x.innerHTML
// => "
// => Warning: This element contains <code>code</code> and <strong>strong language</strong>.
// => "
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
x.innerText
// => "Warning: This element contains code and strong language."
innerText
wurde von Microsoft eingeführt und für eine Weile von Firefox nicht unterstützt. Im August 2016 innerText
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
gilt text-transform
und white-space
Regeln
innerText
schneidet Leerzeichen zwischen Zeilen ab und fügt Zeilenumbrüche zwischen Elementen hinzu
innerText
gibt keinen Text für unsichtbare Elemente zurück
innerText
wird textContent
für Elemente zurückgegeben, die niemals wie <style />
und ` gerendert werden
- Eigenschaft von
Node
Elementen
node.textContent
Ruft den Textinhalt eines Knotens und seiner Nachkommen ab oder legt diesen fest.
x.textContent
// => "
// => Warning: This element contains code and strong language.
// => "
Dies ist zwar ein W3C-Standard , wird jedoch von IE <9 nicht unterstützt.
- Ist sich des Stils nicht bewusst und gibt daher von CSS ausgeblendete Inhalte zurück
- Löst keinen Reflow aus (daher performanter)
- Eigenschaft von
Node
Elementen
node.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 keine value
Eigenschaft definiert ist.
x.value // => null
Eingabe-Tags ( <input />
) definieren beispielsweise eine value
Eigenschaft , die sich auf den "aktuellen Wert im Steuerelement" bezieht.
<input id="example-input" type="text" value="default" />
<script>
document.getElementById('example-input').value //=> "default"
// User changes input to "something"
document.getElementById('example-input').value //=> "something"
</script>
Aus den Dokumenten :
Hinweis: Bei bestimmten Eingabetypen stimmt der zurückgegebene Wert möglicherweise nicht mit dem vom Benutzer eingegebenen Wert überein. Wenn der Benutzer beispielsweise einen nicht numerischen Wert in ein eingibt <input type="number">
, kann der zurückgegebene Wert stattdessen eine leere Zeichenfolge sein.
Beispielskript
Hier ist ein Beispiel, das die Ausgabe für den oben dargestellten HTML-Code zeigt:
var properties = ['innerHTML', 'innerText', 'textContent', 'value'];
// Writes to textarea#output and console
function log(obj) {
console.log(obj);
var currValue = document.getElementById('output').value;
document.getElementById('output').value = (currValue ? currValue + '\n' : '') + obj;
}
// Logs property as [propName]value[/propertyName]
function logProperty(obj, property) {
var value = obj[property];
log('[' + property + ']' + value + '[/' + property + ']');
}
// Main
log('=============== ' + properties.join(' ') + ' ===============');
for (var i = 0; i < properties.length; i++) {
logProperty(document.getElementById('test'), properties[i]);
}
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
<textarea id="output" rows="12" cols="80" style="font-family: monospace;"></textarea>
innerText
einer nicht standardmäßigen Implementierung von textContext durch MSIE nicht trivial.