через свойство innerText против innerHTML будет против против против против текстового содержимого этикетке текст, то свойство outertext
у меня есть выпадающий список, который заполняется Javascript.
решая, какое значение по умолчанию должно отображаться при загрузке, я понял, что следующие свойства показывают точно такие же значения:
innerTextinnerHtmllabeltexttextContentouterText
мои собственные исследования показывают, контрольных тестов или сравнений между их немного, но не все.
могу ли я использовать свой собственный здравый смысл и выбрать 1 или другую, поскольку они обеспечивают тот же результат, но, я боюсь, это не будет хорошей идеей, если данные были изменены.
мои выводы:
innerTextпокажет значение как есть и игнорирует любое форматирование HTML, которое может быть включено
innerHTMLпокажет значение и применит любое форматирование HTML
labelпоявляется то же самое какinnerText, Я не вижу разницы
textпохоже, это то же самое, что иinnerTextно сокращенная версия jQuery
textContentвыглядит так же, какinnerText, но сохраняет форматирование (например,n)
outerTextпредставляется таким же, какinnerText
мои исследования могут привести меня только до тех пор, пока я могу только проверить, что я могу думать или читать то, что опубликовано, может ли кто-нибудь подтвердить, если мои исследования верны и если есть ничего особенного label и outerText?
5 ответов:
С MDN:
Internet Explorer представил элемент.внутренний текст. Намерение в значительной степени то же самое [как textContent] с несколькими различиями:
обратите внимание, что в то время как textContent получает содержимое всех элементов, в том числе
<script>и<style>элементы, в основном эквивалентное IE-специфическое свойство, innerText, не делает.innerText также знает о стиле и не будет возвращает текст скрытых элементов, в то время как textContent будет.
поскольку innerText знает о стилизации CSS, он вызовет перепрошивку, тогда как textContent не будет.
так
innerTextне будет включать текст, который скрыт CSS, ноtextContentбудет.innerHTML возвращает HTML, как указывает его имя. Довольно часто для извлечения или записи текста внутри элемента люди используют innerHTML. вместо этого следует использовать textContent. Поскольку текст не анализируется как HTML, он, вероятно, будет иметь лучшую производительность. Кроме того, это позволяет избежать вектора атаки XSS.
в случае, если вы пропустили, то повторю более четко: Do не использовать
.innerHTMLесли вы специально не собираетесь вставлять HTML в элемент и не приняли необходимые меры предосторожности, чтобы убедиться, что вставляемый HTML не может содержать вредоносное содержимое. Если вы только хотите вставить текст, использовать.textContentили если вам нужно поддерживать IE8 и ранее, используйте функцию обнаружения для отключения между.textContentи.innerText.основная причина, по которой существует так много разных свойств, заключается в том, что разные браузеры изначально имели разные имена для этих свойств, и до сих пор не существует полной кросс-браузерной поддержки для всех из них. Если вы используете jQuery, вы должны придерживаться
.text()так как это предназначено для сглаживания кросс-браузера различия.*для остальных:
outerHTMLв основном то же самое, чтоinnerHTML, за исключением того, что он включает начальные и конечные теги элемента, к которому он принадлежит. Я не могу найти много описанияouterTextна всех. Я думаю, что это, вероятно, неясное наследственное свойство и его следует избегать.
выпадающий список содержит коллекцию
Optionобъекты, так что вы должны использовать.textсвойство для проверки текстового представления элемента, т. е.<option value="123">text goes here</option> ^^^^^^^^^^^^^^кстати,
.textпредставляется таким же, как.innerTextно сокращенная версия JQueryэто не так;
$(element).text()это версия jQuery, тогда какelement.textверсия доступа к свойству.
добавление в противном случае отличный ответ JLRishe это:
причина, по которой существует как внутренний, так и внешний текст, заключается в симметрии с innerHTML и outerHTML. Это становится важным, когда вы присвоить в собственность.
Предположим, у вас есть элемент
eHTML-код<b>Lorem Ipsum</b>:e.innerHTML = "<i>Hello</i> World!"; => <b><i>Hello</i> World!</b> e.outerHTML = "<i>Hello</i> World!"; => <i>Hello</i> World! e.innerText = "Hello World!"; => <b>Hello World!</b> e.outerText = "Hello World!"; => Hello World!
смотрите совместимость браузеров http://www.quirksmode.org/dom/html/ Если вы ориентируетесь на определенные браузеры. Потому что кажется, что у них у всех есть свой собственный способ делать вещи. Вот почему лучше всего использовать JQuery .текст() (http://api.jquery.com/text/) Если вы не хотите возиться.
Comments