2012-04-29 2 views

ответ

108

Возможно, вы захотите попробовать textContent вместо innerHTML.

Предоставлено innerHTML будет возвращать содержимое DOM как String, а не только «текст» в div. Это нормально, если вы знаете, что ваш div содержит только текст, но не подходит, если каждый вариант использования. Для тех случаев, вам, возможно, придется использовать textContent вместо innerHTML

Например, учитывая следующую разметку:

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

Вы получите следующий результат:

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

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

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

Посмотреть MDN для получения более подробной информации:

+0

'.textContent' не поддерживается в IE8 и ниже, что делает его несколько сложным в использовании. – Blender

+2

Правда. Indead, 'innerHTML' не возвращает только текстовое содержимое по запросу в вопросе. Я бы воспользовался решением, основанным на обнаружении функции '.textContent', с отступлением для dhar

+3

Хотя более старый вопрос, _.textContent_ - более подходящий ответ для сегодняшнего мира. – Donovan

1

Поскольку textContent не поддерживается в IE8 и старше, вот обходной путь:

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

innerText работает в IE.

Смежные вопросы