2012-04-29 7 views

Odpowiedz

108

Prawdopodobnie będziesz chciał wypróbować textContent zamiast innerHTML.

Otrzymana innerHTML zwróci treść DOM jako String, a nie wyłącznie "tekst" w div. W porządku, jeśli wiesz, że twój div zawiera tylko tekst, ale nie nadaje się, jeśli każdy przypadek użycia. Dla tych przypadków, prawdopodobnie będziesz musiał użyć textContent zamiast innerHTML

Na przykład, biorąc pod uwagę następujące znaczniki:

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

dostaniesz następujący wynik:

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

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

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

Zobacz MDN, aby uzyskać więcej informacji:

+0

'.textContent' nie jest obsługiwane w IE8 i niżej, co sprawia, że ​​jest nieco trudny w użyciu. – Blender

+2

Prawda. Indead, 'innerHTML' nie zwraca tylko treści tekstowej zgodnie z żądaniem w pytaniu. Zaimplementowałem rozwiązanie oparte na wykrywaniu funkcji '.textContent' z awarią dla dhar

+3

Chociaż starsze pytanie, _.textContent_ jest bardziej odpowiednią odpowiedzią na dzisiejszy świat. – Donovan

1

Ponieważ textContent nie jest obsługiwana w IE8 i starsze, tutaj jest obejście:

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

innerText działa w IE.

Powiązane problemy