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

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

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

или же

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

2 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам