← Все вопросы

Чем textContent отличается от value? Беру текст из input, а получаю пусто

Задан 22 месяца назад835 просмотров2 ответа
5

Я думал, текст элемента всегда в textContent. Но у поля ввода textContent пустой, хотя я туда что-то написал. А у обычного <p> наоборот. Не пойму логику.

2 ответа

9
✓ Принятый ответ — помог автору

Это разные вещи для разных элементов:

  • .value — то, что введено в поля формы: <input>, <textarea>, <select>. Текст внутри поля живёт в value, а не в textContent.
  • .textContent — текст, который виден внутри обычных тегов: <p>, <div>, <span>, <button> и т.п.
const input = document.getElementById('name');
console.log(input.value);        // то, что напечатал пользователь

const p = document.getElementById('greeting');
p.textContent = 'Привет!';       // меняем видимый текст абзаца

Поэтому у <input> читаешь value, а у <p>textContent. Перепутал свойство — получишь пусто.

3

Короткая шпаргалка: «поля ввода → .value, всё остальное → .textContent». Если когда-нибудь захочешь вставить именно HTML (теги), есть ещё .innerHTML, но для простого текста безопаснее textContent.

Ваш ответ

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