¿Diferencia entre texto interno, HTML interno y valor?
¿Cuál es la diferencia entre innerHTML
y innerText
en value
JavaScript?
Los siguientes ejemplos hacen referencia al siguiente fragmento de HTML:
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
El siguiente JavaScript hará referencia al nodo:
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 serialización y análisis DOM del W3C . Tenga en cuenta que es una propiedad de Element
los 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 introducido por Microsoft y durante un tiempo no fue compatible con Firefox. En agosto de 2016, WHATWGinnerText
lo adoptó y se agregó a Firefox en v45.innerText
le brinda una representación del texto que tiene en cuenta el estilo y que intenta coincidir con lo que representa el navegador, esto significa:innerText
se aplicatext-transform
ywhite-space
rigeinnerText
recorta los espacios en blanco entre líneas y agrega saltos de línea entre elementosinnerText
no devolverá texto para elementos invisibles
innerText
regresarátextContent
para elementos que nunca se representan como<style />
y `- Propiedad de
Node
los 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 , no es compatible con IE < 9.
- No conoce el estilo y, por lo tanto, devolverá contenido oculto por CSS
- No desencadena un reflujo (por lo tanto, tiene más rendimiento)
- Propiedad de
Node
los 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, es posible que el valor devuelto no coincida con el valor ingresado por el usuario. Por ejemplo, si el usuario ingresa un valor no numérico en un archivo
<input type="number">
, el valor devuelto podría ser una cadena vacía.
Guión de muestra
A continuación se muestra 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>
Sin innerText
embargo, a diferencia de , innerHTML
le permite trabajar con texto enriquecido HTML y no codifica ni decodifica texto automáticamente. En otras palabras, innerText
recupera y establece el contenido de la etiqueta como texto sin formato, mientras que innerHTML
recupera y establece el contenido en formato HTML.
InnerText
La propiedad html codifica el contenido, pasando <p>
a <p>
, etc. Si desea insertar etiquetas HTML, debe usar InnerHTML
.
En palabras simples:
innerText
mostrará el valor tal cual e ignorará cualquierHTML
formato que pueda incluirse.innerHTML
mostrará el valor y aplicará cualquierHTML
formato.