JavaScript свойство Node.nodeValue

Определение и применение

JavaScript свойство nodeValue объекта Node позволяет получить, или установить значение текущего узла. Когда значение nodeValue определено как null, то в этом случае его установка не окажет на элемент никакого эффекта.

Перечень возможных возвращаемых значений в зависимости от типа узла представлен в следующей таблице:

Значения nodeValue для разных типов узлов
Интерфейс Значение nodeValue
Attr Значение атрибута.
CDATASection Содержимое секции CDATA.
Comment Содержимое узла комментария.
Document null
DocumentFragment null
DocumentType null
Element null
ProcessingInstruction Содержимое инструкции без цели (значение свойства data).
Text Содержимое текстового узла.

Если узел является узлом элемента, то свойство nodeValue возвращает значение null. Если вам необходимо получить текст элемента, то не забывайте о том, что текст находится внутри текстового узла, и для его получения вы можете воспользоваться, например, свойством childNodes объекта Node, которое возвращает коллекцию всех дочерних узлов необходимого узла в виде объекта NodeList:

JavaScript
node.childNodes[0].nodeValue; // получаем текст элемента

В этом случае в качестве более простой альтернативы свойству nodeValue, вы можете воспользоваться свойством textContent, которое возвращает, или задает текстовое содержимое элемента и всех его потомков.

Поддержка браузерами

Спецификация: dom.spec.whatwg

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьapi.Node.nodeValue
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
nodeValue✓1✓12✓1✓≤12.1✓1✓18✓4✓≤12.1✓1✓1.0✓4.4✓1

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
const value = node.nodeValue;

Спецификация

DOM Standard.

У первого дочернего узла не обязательно текстовый тип: он может быть элементом или комментарием, а детей может не быть вовсе. Для всего текста элемента обычно удобнее element.textContent; перед чтением firstChild.nodeValue проверьте наличие и тип узла.

Пример использования

Чтение текста дочернего узла кнопки

Нажмите ▶, затем Show value: под кнопкой появится текст её дочернего текстового узла. Измените надпись кнопки в index.html и сравните.

index.html
HTML
<button data-example-event-0="">Show value</button>
<!-- добавляем атрибут событий onclick -->
<p id="result"></p>
main.js
JavaScript
function myFunc() {
    const buttonValue = document.querySelector('button').childNodes[0].nodeValue, // получаем значение текстового узла внутри элемента <button>
        result = document.getElementById('result') // находим элемент по id

    result.innerHTML = buttonValue // добавляем в содержимое элемента строковое значение, представляющее значение узла
}

document.querySelector('[data-example-event-0]').addEventListener('click', function (event) {
    myFunc()
})
style.css
CSS
body {
  margin: 16px;
  font:
    16px/1.5 system-ui,
    sans-serif;
  overflow-wrap: anywhere;
}
img,
input,
select,
textarea,
button {
  max-width: 100%;
}

В этом примере с использованием метода addEventListener() при нажатии на кнопку (HTML элемент <button>) вызываем функцию, которая с помощью свойств childNodes и nodeValue объекта Node получает значение текстового узла внутри элемента <button> и добавляет это строковое значение в содержимое элемента <p>.