У меня есть раскрывающийся список, заполненный Javascript.
Решая, какое значение по умолчанию должно отображаться при загрузке, я понял, что следующие свойства показывают точно такие же значения:
innerText
innerHtml
label
text
textContent
outerText
Мое собственное исследование показывает сравнительные тесты или сравнения между некоторыми из них, но не всеми.
Я могу использовать свой здравый смысл и выбрать одно или другое, поскольку они дают тот же результат, но, я обеспокоен, это не будет хорошей идеей, если данные будут изменены.
Мои выводы:
innerText
будет отображать значение как есть и игнорировать любое HTML-форматирование, которое может быть включеноinnerHTML
покажет значение и применит любое форматирование HTMLlabel
похоже, такой жеinnerText
, поэтому я не вижу разницыtext
выглядит так же, какinnerText
и сокращенная версия jQuerytextContent
выглядит так же, как,innerText
но сохраняет форматирование (например,\n
)outerText
кажется таким же, какinnerText
Мое исследование может продвинуть меня только настолько, насколько я могу проверить только то, что я могу думать или прочитать опубликованное, может ли кто-нибудь подтвердить правильность моего исследования и есть ли что-то особенное в label
и outerText
?
javascript
html
dom
MyDaftQuestions
источник
источник
.text()
для получения текстового содержимого элемента, поскольку это обеспечит максимальную кроссбраузерную поддержку.Ответы:
Из MDN :
Так
innerText
что не будет включать текст, скрытый CSS, ноtextContent
будет.В случае , если вы пропустили , что, позвольте мне повторить это более ясно: Do не использовать ,
.innerHTML
если вы специально не намерены вставить HTML внутри элемента и приняли необходимые меры предосторожности , чтобы гарантировать , что HTML вы вставляете не может содержать вредоносный контент. Если вы хотите только вставить текст, используйте.textContent
или, если вам нужно поддерживать IE8 и более ранние версии, используйте обнаружение функций, чтобы переключаться между.textContent
и.innerText
.Основная причина того, что существует так много разных свойств, заключается в том, что разные браузеры изначально имели разные имена для этих свойств, и до сих пор нет полной кроссбраузерной поддержки для всех из них. Если вы используете jQuery, вам следует придерживаться его,
.text()
поскольку он разработан для сглаживания различий между браузерами. *Для некоторых других:
outerHTML
в основном то же, что иinnerHTML
, за исключением того, что включает начальный и конечный теги элемента, которому он принадлежит. Кажется, я вообще не могу найти подробного описанияouterText
. Я думаю, что это, вероятно, малоизвестное устаревшее свойство, и его следует избегать.источник
in order to retrieve or write text within an element, people use innerHTML. textContent should be used instead
что textContent не поддерживается IE 8, который до сих пор довольно широко используется, поскольку эта версия входит в комплект Windows 7. А FireFox не поддерживает innerText . Таким образом, хотя innerHTML не идеально подходит для этой цели, он имеет лучшую кроссбраузерность..textContent
и.innerText
или использовать что-то вроде jQuery, которое сглаживает эти различия браузеров.textContent
с тегами HTML. Если вам нужно вставить HTML, вы должны либо использовать,.innerHTML
либо создавать узлы HTML, используяdocument.createElement()
и т. Д.innerHTML
(в отличие отtextContent
) может открыть дверь для атак XSS (межсайтовый скриптинг) на ваше приложение. Если контент, вставляемый в DOM черезinnerHTML
, не является полностью доверенным, злоумышленник может использовать<script>
элемент для взлома вашего приложения, аутентифицированного на уровне авторизации пользователя или администратора. Все атаки, в том числе такие странно выглядящие, как<img src="x.x" onerror="alert('Hacked!');"/>
и множество более хитрых, эффективно уничтожаются простым использованиемtextContent
в этом контексте вместо опасногоinnerHTML
.Выпадающий список содержит набор
Option
объектов, поэтому вы должны использовать это.text
свойство для проверки текстового представления элемента, т. Е.Btw,
Это не правильно;
$(element).text()
- это версия jQuery, тогдаelement.text
как версия доступа к свойствам.источник
Дополнение к отличному ответу JLRishe:
Причина, по которой существуют innerText и outerText, заключается в симметрии с innerHTML и outerHTML. Это становится важным при назначении собственности.
Предположим, у вас есть элемент
e
с HTML-кодом<b>Lorem Ipsum</b>
:источник
textContent
не будет форматировать (\ n)источник
См. Информацию о совместимости браузеров http://www.quirksmode.org/dom/html/, если вы ориентируетесь на определенные браузеры. Потому что кажется, что у всех есть свой способ делать что-то. Вот почему лучше использовать JQuery .text () ( http://api.jquery.com/text/ ), если вы не хотите возиться.
источник
text
иlabel
удалите лишние пробелы. Я получил эти результаты при запросе параметров в раскрывающемся списке:источник