Подтвердить что ты не робот

Как выбрать между innerText или nodeValue?

Когда мне нужно изменить текст внутри элемента span, который я должен использовать и в чем разница:

var spnDetailDisplay=document.getElementById('spnDetailDisplay');
spnDetailDisplay.innerText=sDetail;

или

 var spnDetailDisplay=document.getElementById('spnDetailDisplay');
 spnDetailDisplay.childNodes[0].nodeValue=sDetail;
4b9b3361

Ответ 1

Для элементов с текстовым контентом они одинаковы. См. эту статью MDC для получения информации о nodeValue.

Из в этой статье:

Если элемент не имеет подэлементов, просто текст, то он (обычно) имеет один дочерний элемент node, доступ к которому равен ElemRef.childNodes[0]. В таком точном случае эквивалент веб-стандартов W3C ElemRef.innerText равен ElemRef.childNodes[0].nodeValue.

Ответ 2

  • nodeValue - это стандартная рекомендация W3C.
  • innerText является специфическим для Internet Explorer, а не стандартным. А также:
    • Не возвращает содержимое <script> и <style>.
    • Стиль осведомленности, не возвращает текст скрытых элементов.
    • Осведомленность о стилях CSS, это вызовет перекомпоновку.

Однако в версиях всех основных браузеров по состоянию на март 2016 года поддерживается innerText.

В целом, они похожи, но если вам нужна лучшая производительность, следует использовать nodeValue.

Ссылка для теста производительности: https://jsperf.com/read-innerhtml-vs-innertext-vs-nodevalue-vs-textcontent/13