2012-04-29 37 views

Respuesta

108

Probablemente querrá probar textContent en lugar de innerHTML.

Dado innerHTML devolverá contenido DOM como String y no exclusivamente el "texto" en el div. Está bien si sabes que tu div contiene solo texto pero no es adecuado para todos los casos de uso. Para esos casos, es probable que tenga que utilizar en lugar de textContentinnerHTML

Por ejemplo, teniendo en cuenta el siguiente marcado:

<div id="test"> 
    Some <span class="foo">sample</span> text. 
</div> 

obtendrá el siguiente resultado:

var node = document.getElementById('test'), 

htmlContent = node.innerHTML, 
// htmlContent = "Some <span class="foo">sample</span> text." 

textContent = node.textContent; 
// textContent = "Some sample text." 

Ver MDN para más detalles:

+0

'.textContent' no es compatible con IE8 y versiones anteriores, lo que hace que sea algo difícil de usar. – Blender

+2

Es cierto. Indead, 'innerHTML' no devuelve solo el contenido de texto como se solicita en la pregunta. Implementaría una solución basada en la detección de características '.textContent' con un respaldo para dhar

+3

Aunque una pregunta anterior, _.textContent_ es la respuesta más adecuada para el mundo de hoy. – Donovan

1

Debido textContent no se admite en IE8 y mayores, aquí es una solución:

var node = document.getElementById('test'), 
var text = node.textContent || node.innerText; 
alert(text); 

innerText funciona en IE.

Cuestiones relacionadas