Как выбрать между innerText или nodeValue? - PullRequest
19 голосов
/ 19 ноября 2009

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

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

или

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

Ответы [ 2 ]

17 голосов
/ 19 ноября 2009

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

Из этой статьи :

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

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

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

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

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

...