Приведенные ниже примеры относятся к следующему фрагменту HTML:
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
На узел будет ссылаться следующий JavaScript:
var x = document.getElementById('test');
element.innerHTML
Устанавливает или получает синтаксис HTML, описывающий потомков элемента
x.innerHTML
// => "
// => Warning: This element contains <code>code</code> and <strong>strong language</strong>.
// => "
Это часть спецификации W3C для анализа и сериализации DOM . Обратите внимание, что это свойство Element
объектов.
node.innerText
Устанавливает или получает текст между начальным и конечным тегами объекта
x.innerText
// => "Warning: This element contains code and strong language."
innerText
был представлен Microsoft и некоторое время не поддерживался Firefox. В августе 2016 года innerText
была принята WHATWG и добавлена в Firefox в v45.
innerText
дает вам представление текста, которое пытается соответствовать тому, что отображается в браузере, это означает:
innerText
применяется text-transform
и white-space
правила
innerText
удаляет пробелы между строк и добавляет разрывы строк между элементами
innerText
не вернет текст для невидимых предметов
innerText
вернется textContent
для элементов, которые никогда не отображаются как <style />
и `
- Свойство
Node
элементов
node.textContent
Получает или задает текстовое содержимое узла и его потомков.
x.textContent
// => "
// => Warning: This element contains code and strong language.
// => "
Хотя это стандарт W3C , он не поддерживается IE <9.
- Не знает стиля и поэтому вернет содержимое, скрытое CSS
- Не запускает оплавление (следовательно, более производительное)
- Свойство
Node
элементов
node.value
Это зависит от элемента, на который вы нацелены. Для приведенного выше примера x
возвращает объект HTMLDivElement , для которого не определено value
свойство.
x.value // => null
<input />
Например, теги input ( ) определяют value
свойство , которое ссылается на «текущее значение в элементе управления».
<input id="example-input" type="text" value="default" />
<script>
document.getElementById('example-input').value //=> "default"
// User changes input to "something"
document.getElementById('example-input').value //=> "something"
</script>
Из документов :
Примечание: для определенных типов ввода возвращаемое значение может не совпадать со значением, введенным пользователем. Например, если пользователь вводит нечисловое значение в <input type="number">
, возвращаемое значение может быть пустой строкой.
Образец скрипта
Вот пример, который показывает вывод для HTML, представленного выше:
var properties = ['innerHTML', 'innerText', 'textContent', 'value'];
// Writes to textarea#output and console
function log(obj) {
console.log(obj);
var currValue = document.getElementById('output').value;
document.getElementById('output').value = (currValue ? currValue + '\n' : '') + obj;
}
// Logs property as [propName]value[/propertyName]
function logProperty(obj, property) {
var value = obj[property];
log('[' + property + ']' + value + '[/' + property + ']');
}
// Main
log('=============== ' + properties.join(' ') + ' ===============');
for (var i = 0; i < properties.length; i++) {
logProperty(document.getElementById('test'), properties[i]);
}
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
<textarea id="output" rows="12" cols="80" style="font-family: monospace;"></textarea>
innerText
нестандартной реализацией textContext от MSIE нетривиально.