javascript: получить содержимое текстовой области, textContent против innerHTML против innerText

У меня проблемы с получением содержимого текстовой области с помощью js. Мне кажется, что я делал это много раз раньше без проблем, но что-то мешает или у меня ментальный блок.

HTML

<textarea id="productdescript">test copy..asdfd</textarea><button value="Enter" onclick="addProduct()">

js

function addProduct() {
var descript = document.getElementById('productdescript').textContent;
alert(descript);
}

Файрфокс — единственный браузер, который у меня сейчас есть.

Когда я использую textContent, появляется окно предупреждения, но оно пустое. Когда я использую значение, появляется окно предупреждения с надписью «Не определено». Когда я использую innerHTML, появляется весь HTML, включая теги.

Кроме того, я понимаю, что textContent работает только в FF, и для кросс-браузерной совместимости вам нужно сделать что-то вроде innerText и textContent, но textContent не работает в FF. В этом приложении нет jquery

Каков правильный кросс-браузерный способ получить содержимое текстовой области! Спасибо за любые предложения.


person user1904273    schedule 15.04.2013    source источник


Ответы (2)


Для textarea вы можете использовать только .value в своем сценарии (я проверил ваш код, и он отлично работает). .

Также,

1) имейте в виду, что вы вызываете эту функцию addProduct() ТОЛЬКО после упоминания вашего элемента в коде, иначе это будет undefined.

2) не должно быть не другого элемента с id as productdescript

3) не должно быть JS variable под названием productdescript

person Raheel Hasan    schedule 15.04.2013
comment
это была опечатка в моем вопросе. Спасибо! Код на самом деле имел строчную букву d, но все еще демонстрировал вышеуказанные проблемы. - person user1904273; 15.04.2013
comment
есть идеи, почему он предупреждает Undefined, когда я использую .value? - person user1904273; 15.04.2013
comment
Я полагаю, что addProduct вызывается после упоминания идентификатора. - person user1904273; 15.04.2013
comment
Затем в html-коде должен быть еще один элемент с идентификатором productdescript. Проверьте источник просмотра. - person Raheel Hasan; 15.04.2013
comment
вы были правы, был другой идентификатор с таким же именем. .значение сработало - person user1904273; 16.04.2013
comment
Мне было интересно, почему textContent не работает, ведь вроде должно. Оказывается, это WAI: textContent возвращает текстовое содержимое в DOM - не текущее значение элемента управления - person Carl Walsh; 01.05.2019

Это ваш код?

вы пишете document.getElementByID...., а "D" должно быть написано в нижнем регистре "d"

document.getElementById('productdescript').textContent;
person Superboleta    schedule 15.04.2013