← Все вопросы

Как поменять текст элемента через JavaScript — textContent или innerHTML?

Задан 7 месяцев назад621 просмотров4 ответа
11

Хочу из JS изменить надпись внутри <div> или <span>. Нашёл textContent и innerHTML. В чём разница и что использовать, если нужен просто текст?

4 ответа

19

Для обычного текста — textContent. Он вставляет строку как есть, без разбора HTML:

const el = document.querySelector('#title');
el.textContent = 'Новый текст';

innerHTML парсит строку как HTML: el.innerHTML = '<b>Привет</b>' вставит жирный текст. Но в этом и опасность — если в строку попадут данные от пользователя, через innerHTML можно словить XSS-уязвимость (вставят <script> или картинку с onerror). Поэтому правило: меняешь просто текст → textContent; нужно именно вставить разметку и ты контролируешь её источник → innerHTML.

Снежана Фролова textContent ещё и быстрее, потому что не парсит HTML · 7 месяцев назад
7

Просто текст — textContent. Нужна разметка внутри — innerHTML (но осторожно с пользовательскими данными).

5

Есть ещё innerText — он, в отличие от textContent, учитывает CSS (не вернёт скрытый через display:none текст) и заставляет браузер пересчитать стили, поэтому медленнее. Для простой подстановки текста бери textContent.

3

element.textContent = '...'.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект