Los siguientes ejemplos se refieren al siguiente fragmento de HTML:
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
El nodo será referenciado por el siguiente JavaScript:
var x = document.getElementById('test');
element.innerHTML
Establece u obtiene la sintaxis HTML que describe los descendientes del elemento.
x.innerHTML
// => "
// => Warning: This element contains <code>code</code> and <strong>strong language</strong>.
// => "
Esto es parte de la Especificación de análisis y serialización DOM del W3C . Tenga en cuenta que es una propiedad de los Element
objetos.
node.innerText
Establece u obtiene el texto entre las etiquetas de inicio y fin del objeto
x.innerText
// => "Warning: This element contains code and strong language."
innerText
fue presentado por Microsoft y no fue compatible por un tiempo con Firefox. En agosto de 2016, innerText
fue adoptado por el WHATWG y se agregó a Firefox en v45.
innerText
le ofrece una representación del texto que tiene en cuenta el estilo que intenta coincidir con lo que representa el navegador, esto significa:
innerText
aplica text-transform
y white-space
gobierna
innerText
recorta el espacio en blanco entre líneas y agrega saltos de línea entre elementos
innerText
no devolverá texto para elementos invisibles
innerText
regresará textContent
para elementos que nunca se representan como <style />
y `
- Propiedad de los
Node
elementos
node.textContent
Obtiene o establece el contenido de texto de un nodo y sus descendientes.
x.textContent
// => "
// => Warning: This element contains code and strong language.
// => "
Si bien este es un estándar W3C , IE <9 no lo admite.
- No conoce el estilo y, por lo tanto, devolverá contenido oculto por CSS
- No desencadena un reflujo (por lo tanto, más eficiente)
- Propiedad de los
Node
elementos
node.value
Este depende del elemento al que te hayas dirigido. Para el ejemplo anterior, x
devuelve un objeto HTMLDivElement , que no tiene una value
propiedad definida.
x.value // => null
Las etiquetas de entrada ( <input />
), por ejemplo, definen una value
propiedad , que se refiere al "valor actual en el control".
<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>
De los documentos :
Nota: para ciertos tipos de entrada, el valor devuelto puede no coincidir con el valor que el usuario ha ingresado. Por ejemplo, si el usuario ingresa un valor no numérico en un <input type="number">
, el valor devuelto podría ser una cadena vacía.
Script de muestra
Aquí hay un ejemplo que muestra el resultado del HTML presentado anteriormente:
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
una implementación no estándar de textContext por MSIE no es trivial.