В чем разница между innerHTML
, innerText
и childNodes[].value
в JavaScript?
javascript
dom
user2819851
источник
источник
innerText
нестандартной реализацией textContext от MSIE нетривиально.innerText
был добавлен в стандарты и поддерживается всеми основными браузерами.textContent
теперь поддерживается IE> = 9 и может использоваться вместоinnerText
большинства (бонус, это намного быстрее), но между ними есть различия, поэтому в некоторых случаях вы не можете поменять их местами.innerText
хорошо поддерживается во всех браузерах. Firefox начал поддерживать его с версии 45. caniuse.com/#search=innertextinnerHTML
является известной уязвимостью для атак XSS. Тем не менее,innerText
это не на 100% безопасно. stackoverflow.com/questions/52707031/does-innertext-prevent-xss blog.cloudboost.io/…Ответы:
Однако, в отличие от этого
innerText
, онinnerHTML
позволяет работать с форматированным текстом HTML и не позволяет автоматически кодировать и декодировать текст. Другими словами,innerText
извлекает и устанавливает содержимое тега в виде простого текста, тогда какinnerHTML
извлекает и устанавливает содержимое в формате HTML.источник
Приведенные ниже примеры относятся к следующему фрагменту HTML:
На узел будет ссылаться следующий JavaScript:
element.innerHTML
Устанавливает или получает синтаксис HTML, описывающий потомков элемента
Это часть спецификации W3C для анализа и сериализации DOM . Обратите внимание, что это свойство
Element
объектов.node.innerText
Устанавливает или получает текст между начальным и конечным тегами объекта
innerText
был представлен Microsoft и некоторое время не поддерживался Firefox. В августе 2016 годаinnerText
была принята WHATWG и добавлена в Firefox в v45.innerText
дает вам представление текста, которое пытается соответствовать тому, что отображается в браузере, это означает:innerText
применяетсяtext-transform
иwhite-space
правилаinnerText
удаляет пробелы между строк и добавляет разрывы строк между элементамиinnerText
не вернет текст для невидимых предметовinnerText
вернетсяtextContent
для элементов, которые никогда не отображаются как<style />
и `Node
элементовnode.textContent
Получает или задает текстовое содержимое узла и его потомков.
Хотя это стандарт W3C , он не поддерживается IE <9.
Node
элементовnode.value
Это зависит от элемента, на который вы нацелены. Для приведенного выше примера
x
возвращает объект HTMLDivElement , для которого не определеноvalue
свойство.<input />
Например, теги input ( ) определяютvalue
свойство , которое ссылается на «текущее значение в элементе управления».Из документов :
Образец скрипта
Вот пример, который показывает вывод для HTML, представленного выше:
источник
innerText
: quirksmode.org/dom/html и quirksmode.org/dom/tests/innerhtml.htmlFirefox >=45
поддерживается.innerText
он теперь является частью стандарта и должен поддерживаться Firefox начиная с версии 45; может быть причина для обновления этого великолепного ответа @faraz<
в<
,>
и>
т. Д.InnerText
Свойство html-кодирует содержимое, поворачивается<p>
на<p>
и т. д. Если вы хотите вставить HTML-теги, которые вам нужно использоватьInnerHTML
.источник
Простыми словами:
innerText
покажет значение как есть и проигнорирует любоеHTML
форматирование, которое может быть включено.innerHTML
покажет значение и применит любоеHTML
форматирование.источник
Для дальнейшего уточнения и получения значения Alec, например, используйте другой .childNodes [1]
источник
С точки зрения
MutationObservers
настройки настройкаinnerHTML
генерируетchildList
мутацию из-за того, что браузеры удаляют узел, а затем добавляют новый узел со значениемinnerHTML
.Если вы установите
innerText
,characterData
мутация генерируется.источник
Единственная разница между
innerText
иinnerHTML
заключается в том, чтоinnerText
строка вставляется в элемент как есть, аinnerHTML
запускается как HTML-контент.источник
InnerText
будет возвращать только текстовое значение страницы с каждым элементом на новой строке в виде обычного текста, в то время какinnerHTML
будет возвращать содержимое HTML всего внутриbody
тега иchildNodes
будет возвращать список узлов, как следует из названия.источник
innerText
Свойство возвращает фактическое текстовое значение HTML - элемента , аinnerHTML
возвращаетHTML content
. Пример ниже:источник
чтобы добавить в список, innerText сохранит ваше преобразование текста, innerHTML не будет
источник