Poniższe przykłady odnoszą się do następującego fragmentu kodu HTML:
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
Do węzła będzie odwoływał się następujący JavaScript:
var x = document.getElementById('test');
element.innerHTML
Ustawia lub pobiera składnię HTML opisującą potomków elementu
x.innerHTML
// => "
// => Warning: This element contains <code>code</code> and <strong>strong language</strong>.
// => "
Jest to część specyfikacji parsowania i serializacji DOM W3C . Uwaga: jest to właściwość Element
obiektów.
node.innerText
Ustawia lub pobiera tekst między znacznikami początkowym i końcowym obiektu
x.innerText
// => "Warning: This element contains code and strong language."
innerText
został wprowadzony przez Microsoft i przez pewien czas nie był obsługiwany przez Firefox. W sierpniu 2016 r. innerText
Został przyjęty przez WHATWG i został dodany do przeglądarki Firefox w wersji 45.
innerText
zapewnia stylową reprezentację tekstu, który próbuje dopasować do tego, co renderuje przeglądarka, co oznacza:
innerText
obowiązuje text-transform
i white-space
reguluje
innerText
przycina białe spacje między liniami i dodaje podział linii między elementami
innerText
nie zwróci tekstu dla niewidocznych elementów
innerText
powróci textContent
dla elementów, które nigdy nie są renderowane jak <style />
i `
- Właściwość
Node
elementów
node.textContent
Pobiera lub ustawia zawartość tekstową węzła i jego potomków.
x.textContent
// => "
// => Warning: This element contains code and strong language.
// => "
Chociaż jest to standard W3C , nie jest obsługiwany przez IE <9.
- Nie jest świadomy stylu i dlatego zwróci treści ukryte przez CSS
- Nie wyzwala ponownego wlania (dlatego jest bardziej wydajny)
- Właściwość
Node
elementów
node.value
Ten zależy od elementu, na który celujesz. W powyższym przykładzie x
zwraca obiekt HTMLDivElement , który nie ma value
zdefiniowanej właściwości.
x.value // => null
<input />
Na przykład tagi wejściowe ( ) definiują value
właściwość , która odnosi się do „bieżącej wartości w kontrolce”.
<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>
Z dokumentów :
Uwaga: w przypadku niektórych typów danych wejściowych zwracana wartość może nie być zgodna z wartością wprowadzoną przez użytkownika. Na przykład, jeśli użytkownik wprowadzi wartość nienumeryczną do <input type="number">
, zwrócona wartość może być pustym ciągiem.
Przykładowy skrypt
Oto przykład, który pokazuje wynik dla HTML przedstawionego powyżej:
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
na niestandardową implementację textContext przez MSIE nie jest trywialne.