Как выбрать между 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