¿Cuál es la diferencia entre innerHTML
, innerText
y childNodes[].value
en JavaScript?
javascript
dom
usuario2819851
fuente
fuente
innerText
una implementación no estándar de textContext por MSIE no es trivial.innerText
se ha agregado a los estándares y es compatible con todos los principales navegadores.textContent
ahora es compatible con IE> = 9 y se puede usar en lugar deinnerText
en la mayoría de los casos (bonificación, es mucho más rápido), pero hay diferencias entre los dos, por lo que en algunos casos no puede intercambiarlos.innerText
es compatible con todos los navegadores. Firefox comenzó a admitirloinnerHTML
es una vulnerabilidad conocida para los ataques XSS. Dicho esto,innerText
tampoco es 100% seguro. stackoverflow.com/questions/52707031/does-innertext-prevent-xss blog.cloudboost.io/…Respuestas:
Sin
innerText
embargo, a diferencia , leinnerHTML
permite trabajar con texto enriquecido HTML y no codifica y decodifica automáticamente el texto. En otras palabras,innerText
recupera y establece el contenido de la etiqueta como texto sin formato, mientras queinnerHTML
recupera y establece el contenido en formato HTML.fuente
Los siguientes ejemplos se refieren al siguiente fragmento de HTML:
El nodo será referenciado por el siguiente JavaScript:
element.innerHTML
Establece u obtiene la sintaxis HTML que describe los descendientes del elemento.
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
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
aplicatext-transform
ywhite-space
gobiernainnerText
recorta el espacio en blanco entre líneas y agrega saltos de línea entre elementosinnerText
no devolverá texto para elementos invisiblesinnerText
regresarátextContent
para elementos que nunca se representan como<style />
y `Node
elementosnode.textContent
Obtiene o establece el contenido de texto de un nodo y sus descendientes.
Si bien este es un estándar W3C , IE <9 no lo admite.
Node
elementosnode.value
Este depende del elemento al que te hayas dirigido. Para el ejemplo anterior,
x
devuelve un objeto HTMLDivElement , que no tiene unavalue
propiedad definida.Las etiquetas de entrada (
<input />
), por ejemplo, definen unavalue
propiedad , que se refiere al "valor actual en el control".De los documentos :
Script de muestra
Aquí hay un ejemplo que muestra el resultado del HTML presentado anteriormente:
fuente
innerText
: quirksmode.org/dom/html y quirksmode.org/dom/tests/innerhtml.htmlFirefox >=45
es compatible.innerText
ahora es parte del Estándar y debería ser compatible con Firefox desde la versión 45 en adelante; tal vez razón para una actualización de esta gran respuesta @faraz<
a<
,>
a>
, etc.InnerText
La propiedad html-codifica el contenido, pasando<p>
a<p>
, etc. Si desea insertar etiquetas HTML, debe usarlasInnerHTML
.fuente
En palabras simples:
innerText
mostrará el valor tal como está e ignora cualquierHTML
formato que se pueda incluir.innerHTML
mostrará el valor y aplicará cualquierHTML
formato.fuente
Para refinarlo aún más y recuperar el valor Alec, por ejemplo, use otro .childNodes [1]
fuente
En términos de
MutationObservers
, la configuracióninnerHTML
genera unachildList
mutación debido a que los navegadores eliminan el nodo y luego agregan un nuevo nodo con el valor deinnerHTML
.Si configura
innerText
,characterData
se genera una mutación.fuente
La única diferencia entre
innerText
yinnerHTML
es queinnerText
inserta una cadena tal como está en el elemento, mientras lainnerHTML
ejecuta como contenido html.fuente
InnerText
solo devolverá el valor de texto de la página con cada elemento en una nueva línea en texto sin formato, mientrasinnerHTML
que devolverá el contenido HTML de todo dentro de labody
etiqueta ychildNodes
devolverá una lista de nodos, como sugiere su nombre.fuente
La
innerText
propiedad devuelve el valor de texto real de un elemento html mientras que elinnerHTML
devuelve elHTML content
. Ejemplo a continuación:fuente
para agregar a la lista, innerText mantendrá su transformación de texto, innerHTML no
fuente