Я работаю над проектом Javascript freeCodeCamp, и в настоящее время мне нужно получить значение, указанное пользователем в моем элементе ввода. Я практически уверен, что мой код правильный, но при тестировании его на freeCodeCamp или в Code Pen я создал значение, которое продолжает возвращаться как undefined
.
let cash = document.getElementById("cash").value;
const purchaseBtn = document.getElementById("purchase-btn");
purchaseBtn.addEventListener("click", () => {console.info(cash)});
Эта строка:
const cash = document.getElementById('cash').value;
немедленно получает значение из элемента. Вместо этого вы хотите кэшировать только элемент, а затем регистрировать его значение при вызове обработчика событий.
const cash = document.getElementById('cash');
const purchaseBtn = document.getElementById('purchase-btn');
purchaseBtn.addEventListener('click', () => {console.info(cash.value)});
<input id = "cash">
<button type = "button" id = "purchase-btn">Click me</button>
прослушиватель использует другой контекст для рендеринга значения, поэтому var Cash не определен для выполнения прослушивателя
исправление
const purchaseBtn = document.getElementById("purchase-btn");
purchaseBtn.addEventListener("click", () => {
let cash = document.getElementById("cash").value;
console.info(cash
);
});
Наконец-то имеет смысл. Теперь это очевидно. Спасибо.