Когда мне нужно изменить текст внутри элемента span, который я должен использовать и в чем разница:
var spnDetailDisplay=document.getElementById('spnDetailDisplay');
spnDetailDisplay.innerText=sDetail;
или
var spnDetailDisplay=document.getElementById('spnDetailDisplay');
spnDetailDisplay.childNodes[0].nodeValue=sDetail;
Ответ 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