Разница между innerText, innerHTML и value в JavaScript

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

innerText выводит только текст без HTML-форматирования, идентичный тому, как если бы вы смотрели на страницу.

innerHTML позволяет манипулировать HTML-структурой элементов, включая теги и стили.

value применяется для работы с значениями интерактивных элементов, таких как input, textarea или select.

JS
Скопировать код
// Работаем с текстом, игнорируя HTML-теги
document.querySelector('#elem').innerText = 'Текст';

// Вставляем HTML-код, изменяя структуру страницы
document.querySelector('#elem').innerHTML = '<span>HTML</span>';

// Задаем значение для элементов форм, таких как input или select
document.querySelector('#input').value = 'Данные';
Кинга Идем в IT: пошаговый план для смены профессии

Детальнее об innerText, innerHTML и value

Понимание свойств innerText, innerHTML и value важно для работы с DOM и взаимодействия с пользователем. Давайте разберемся с их применением подробнее.

innerText – текст "как есть"

innerText фильтрует страницу, скрывая CSS и скрытые элементы. Это то, что пользователь видит на экране, не затрагивая код и стили.

  • Защита от XSS: надёжный способ вставки чисто текстового контента.
  • Извлечение текста: идеально подходит для получения видимого текста на странице.
JS
Скопировать код
// Получаем только то, что видим
console.log(document.querySelector('.styledText').innerText);

innerHTML – гибкость HTML

innerHTML дает полный контроль над HTML-содержимым элемента. Создавайте и изменяйте разметку и дизайн документа на лету.

  • Динамический контент: позволяет встраивать интерактивные HTML-элементы.
  • Безопасность: проявляйте осторожность при внедрении ненадёжного контента, чтобы избежать XSS-атак.
JS
Скопировать код
// Добавляем HTML-элементы
document.querySelector('.content').innerHTML = '<div class="new">Новый элемент</div>';

value – данные форм

value актуален для элементов форм и отражает текущее значение, введенное пользователем в input, select или textarea.

  • Обработка данных: центральный элемент для сбора и обработки данных формы.
  • Динамичность: значение может изменяться в реальном времени, делая интерфейс отзывчивым.
JS
Скопировать код
// Значения, введенные пользователем, становятся данными
document.querySelector('#username').value = 'user123';

Визуализация

Давайте визуально представим отличия между innerText, innerHTML, и value:

Markdown
Скопировать код
| Свойство       | Визуальная аналогия                                         |
|----------------|--------------------------------------------------------|
| `innerText`    | 🏞️ **Пейзаж** вокруг вас (читаемый текст без лишних деталей)     |
| `innerHTML`    | 🎨 **Картина** пейзажа (HTML-версия текста с тегами и стилями)    |
| `value`        | ✔️ **Список материалов** для рисования (значения в полях форм)     |

Представьте, что innerText – это вы, наблюдающий за природой 🏞️. То есть простой пейзаж без излишних деталей.

JS
Скопировать код
element.innerText; // "Привет, мир!"

При использовании innerHTML вы взгляните на художественное полотно 🎨, где каждая деталь пейзажа передана с помощью HTML.

JS
Скопировать код
element.innerHTML; // "<p>Привет, <strong>мир!</strong></p>"

value – это как список необходимых для рисования материалов ✔️, перечень того, что вы планируете воспроизвести на холсте.

JS
Скопировать код
element.value; // "Пользовательский ввод"

В конечном итоге,

  • innerText показывает то, что видно.
  • innerHTML раскрывает то, как это представлено в HTML.
  • value – это введенные данные, подобные секретным кодам.

Нюансы и особенности

Погружение в "скрытый мир" с innerText

innerText учитывает CSS-правила, и если элемент скрыт через display: none, он не попадет в вывод innerText.

JS
Скопировать код
hiddenElement.style.display = 'none';
console.log(hiddenElement.innerText); // Результат: '', т.к. невидимый элемент не отображается!

Создание структур через innerHTML

innerHTML позволяет работать со сложными HTML-структурами, предоставляя вам инструменты для создания богатых интерфейсов.

JS
Скопировать код
const markup = `<ul>${items.map(item => `<li>${item}</li>`).join('')}</ul>`;
listContainer.innerHTML = markup; // Создали всю цепочку маркированных списков!

Стабильный value

value обеспечивает постоянный доступ к данным пользователя, независимо от состояния интерфейса, что делает его идеальным для управления формами и проверки данных.

JS
Скопировать код
const userData = {
  username: document.querySelector('#username').value, // JamesBond007
  email: document.querySelector('#email').value // 007@mi6.gov 
};

Бережное использование innerHTML с целью производительности

Частое использование innerHTML может быть затратным из-за перерисовки содержимого. Вместо этого используйте DOM-методы, такие как createElement и appendChild.

JS
Скопировать код
const newElement = document.createElement('p');
newElement.textContent = 'Медленно, но верно побеждаем в гонке за рендеринг!';
document.body.appendChild(newElement);

Полезные материалы

  1. HTMLElement: свойство innerText – Web APIs | MDNдетальное руководство по работе с innerText.
  2. Элемент: свойство innerHTML – Web APIs | MDNофициальная документация по свойству innerHTML.
  3. HTML DOM свойство innerTextразъяснение разницы между innerText и innerHTML.
  4. Разница между innerText, innerHTML и value? – Stack Overflowобсуждение сообщества с практическими примерами и рекомендациями.
  5. Как работать с HTML-элементами форм input и textarea | DigitalOceanисчерпывающее руководство по использованию value для элементов форм.