Tengo una lista desplegable que está poblada por Javascript.
Al decidir cuál debería ser el valor predeterminado para mostrar en la carga, me di cuenta de que las siguientes propiedades mostraban exactamente los mismos valores:
innerTextinnerHtmllabeltexttextContentouterText
Mi propia investigación muestra pruebas de marcado de banco o comparaciones entre algunas de ellas, pero no todas.
Puedo usar mi propio sentido común y elegir 1 u otro, ya que proporcionan el mismo resultado, pero me preocupa que esta no sea una buena idea si los datos cambian.
Mis hallazgos son:
innerTextmostrará el valor como está e ignora cualquier formato HTML que pueda estar incluidoinnerHTMLmostrará el valor y aplicará cualquier formato HTMLlabelparece ser igual queinnerText, así que no puedo ver la diferenciatextparece ser el mismoinnerTextpero la versión abreviada de jQuerytextContentparece igualinnerTextpero sigue formateando (como\n)outerTextparece ser lo mismo queinnerText
Mi investigación solo puede llevarme tan lejos como yo solo puedo probar lo que puedo pensar o leer lo que se publica, ¿alguien puede confirmar si mi investigación es correcta y si hay algo especial sobre labely outerText?
javascript
html
dom
MyDaftQuestions
fuente
fuente

.text()para obtener el contenido de texto de un elemento, ya que eso proporcionará la máxima compatibilidad entre navegadores.Respuestas:
De MDN :
Por
innerTextlo tanto , no incluirá texto oculto por CSS, pero lotextContenthará.En caso de que se ha perdido, permítanme repetir con más claridad: Do no utilizar
.innerHTMLa menos que pretenda específicamente para inserción dentro de un elemento HTML y han tomado las precauciones necesarias para garantizar que el código HTML está insertando no puede contener contenido malicioso. Si solo desea insertar texto, use.textContento si necesita admitir IE8 y versiones anteriores, use la detección de funciones para desactivar.textContenty.innerText.Una razón principal por la que hay tantas propiedades diferentes es que los diferentes navegadores originalmente tenían diferentes nombres para estas propiedades, y todavía no hay soporte completo para todos los navegadores cruzados. Si está utilizando jQuery, debe atenerse a
.text()ya que está diseñado para suavizar las diferencias entre navegadores. *Para algunos de los otros:
outerHTMLes básicamente lo mismo queinnerHTML, excepto que incluye las etiquetas de inicio y fin del elemento al que pertenece. Parece que no puedo encontrar mucha descripción deouterTextnada. Creo que esa es probablemente una propiedad heredada oscura y debería evitarse.fuente
in order to retrieve or write text within an element, people use innerHTML. textContent should be used instead, es que textContent no es compatible con IE 8, que todavía está en uso bastante extendido porque esa es la versión incluida con Windows 7. Y FireFox no es compatible con innerText . Entonces, aunque innerHTML no es ideal para el propósito, tiene una mejor confiabilidad entre navegadores..textContenty.innerText, o usar algo como jQuery que suaviza estas diferencias de navegador.textContentcon etiquetas HTML. Si necesita insertar HTML, usaría.innerHTMLo construiría nodos HTML usandodocument.createElement(), etc.innerHTML(a diferencia detextContent) puede abrir la puerta a ataques XSS (Cross-Site Scripting) en su aplicación. Si el contenido que se inserta en el DOM víainnerHTMLno es completamente confiable, un atacante podría usar un<script>elemento para secuestrar su aplicación autenticada bajo el nivel de autorización de un usuario o administrador. Todos los ataques, incluidos los ataques de aspecto extraño<img src="x.x" onerror="alert('Hacked!');"/>y una miríada de ataques más furtivos, se destruyen de manera efectiva simplemente usandotextContenten este contexto en lugar del peligrosoinnerHTML.Una lista desplegable comprende una colección de
Optionobjetos, por lo que debe usar la.textpropiedad para inspeccionar la representación textual del elemento, es decirPor cierto,
Eso no es correcto;
$(element).text()es la versión de jQuery, mientras queelement.textes la versión de acceso a la propiedad.fuente
Anexo a la excelente respuesta de JLRishe:
La razón por la que existen innerText y externalText es por la simetría con innerHTML y externalHTML. Esto se vuelve importante cuando asigna a la propiedad.
Supongamos que tiene un elemento
econ código HTML<b>Lorem Ipsum</b>:fuente
textContentno formateará (\ n)fuente
Consulte la compatibilidad de navegadores http://www.quirksmode.org/dom/html/ si está apuntando a navegadores específicos. Porque parece que todos tienen su propia forma de hacer las cosas. Es por eso que es mejor usar JQuery .text () ( http://api.jquery.com/text/ ) si no desea jugar.
fuente
textylabeleliminar espacios extra. Obtuve estos resultados al consultar opciones en un menú desplegable:fuente