#javascript
#javascript
Вопрос:
Я пытаюсь отправить новое значение в div, у которого есть роль текстового поля, и я получаю эту ошибку:
Uncaught TypeError:document.querySelector(...).value is not a function at <anonymous>:1:59
HTML-КОД
<div class="msg-form__contenteditable t-14t-black--light t-normal flex-grow-1 full-height notranslate"contenteditable="true" role="textbox"aria-multiline="true" aria-label="Write a message…">
<p>
<br>
</p>
</div>
МОЙ КОД
Он находит элемент, но не отправляет значение.
document.querySelector('[aria-label="Writea message…"]').value("Paul")
Комментарии:
1. Отсутствует пробел между «Write» и «a» в JavaScript. Кроме того,
value()
это недопустимая функция JS. Вам нужно будет создать элемент или узел для текста и добавить его в<div>
. Или вы могли бы заменить содержимое наinnerHTML
.
Ответ №1:
Вот немного информации о textbox
роли. Прямо оттуда:
Лучше использовать
<input>
элемент с типом =»text» или<textarea>
элемент вместо роли текстового поля ARIA. При использовании любого семантического элемента роль текстового поля ARIA не требуется. См. Примечания по использованию ARIA в HTML.
Если вы настроены на использование <div>
, value
для него недопустимый атрибут, и вам нужно будет использовать .innerText
или innerHTML
document.querySelector('[aria-label="Write a message…"]').innerHTML = 'Paul';
Также: .value()
это не функция (это ошибка, которую вы получаете). Если вы пытаетесь установить значение элемента, для которого value
является допустимым атрибутом, вы будете использовать element.value = 'Paul';
JavaScript или element.val('Paul');
jQuery
Комментарии:
1. Вы дали мне идею, и она сработала следующим образом: я нашел элемент p с помощью getelementsbytag, а затем я изменил внутренний HTML для абзаца