Очистка ввода текста ошибки - PullRequest
1 голос
/ 04 апреля 2020

Я создаю систему чата, и когда пользователь общается, он очищает ввод. Переменная msg - это текст, введенный пользователем.

let msg = document.querySelector("input").value;

Я предполагал, что msg = ""; будет работать для очистки ввода, но это не так. Но почему-то document.querySelector("input").value = ""; сработало. Разве они не одно и то же?

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Нет, не то же самое msg назначает только значение, а не элемент. Если бы вы сказали let msg = document.querySelector("input") и msg.value="";, это бы сработало, потому что здесь присутствует элемент msg. В вашем коде msg это значение (не значение элемента).

0 голосов
/ 04 апреля 2020

Свойство value входного элемента на самом деле является getter / setter , аналогично innerHTML элементов. Когда вы присваиваете свойству, установщик запускается и устанавливает состояние элемента в DOM. Когда вы получаете свойство путем доступа к .value, геттер запускается и получает состояние элемента в DOM.

Чтобы установить новое значение, вы должны запустить установщик, и это требует присвоения свойству, например,

document.querySelector("input").value = "";

Элементы в стороне, переназначение переменной само по себе никогда не будет иметь побочных эффектов почти во всех ситуациях. Неважно, что вы делаете, msg = '' в одиночку ничего не сделает, если msg не будет использован позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...