Почему значение моего ввода всегда пусто в Javascript? - PullRequest
0 голосов
/ 24 сентября 2019

Я изучаю javascript и пытаюсь получить значение .value из поля ввода, чтобы потом использовать его для извлечения данных из определенного URL-адреса API.Проблема в том, что мое входное значение всегда пусто, независимо от того, что я в него ввожу.

Я пытался использовать: document.querySelector (), document.getElementById (), тот же результат.

   const searchBtn = document.querySelector("#searchBtn");
   //const inpuValue = document.querySelector("#inputField").value;
   const inputValue = (document.getElementById("inputField")).value;

   const testing = () => alert(inputValue);

   searchBtn.addEventListener("click", testing);

Предупреждение появляется только пустым, но это не так, если я указываюзначение в поле HTML.Так что я полагаю, что запускаю правую кнопку и поле ввода.(Я использую оповещение, потому что ни один из моих браузеров не показывает мне console.log в консоли).

1 Ответ

1 голос
/ 24 сентября 2019

Обработчик функции testing вызывается асинхронно, каждый раз, когда нажимается кнопка.

Иными словами, переменная inputValue оценивается один раз при первом выполнении кода, при загрузке страницы и никогдаочередной раз.Входное значение сохраняется в переменной и после этого никогда не обновляется (строки неизменны в javascript, после сохранения строки в переменной она не изменится, если вы не назначите эту переменную другому значению).

Если вы хотите обновлять значение каждый раз, когда нажимаете кнопку, вам необходимо постоянно запрашивать элемент:

 const testing = () => {
    const inputValue = (document.getElementById("inputField")).value;
    alert(inputValue);
 }

Или вы можете оставить только ссылку на элемент и запросить value все время:

 const inputElement = document.getElementById("inputField");
 const testing = () => alert(inputElement.value);
...