#javascript #function #object #addeventlistener
#javascript #функция #объект #addeventlistener
Вопрос:
Я пытаюсь обновлять значение num внутри моего объекта каждый раз, когда нажимаю кнопку. Однако я не могу заставить его работать. Я печатаю объект на консоль каждый раз, когда нажимаю, чтобы я мог видеть, обновляется ли значение, но это не так. Вот мой код … любая помощь будет оценена. Спасибо!
const addToCart = document.getElementById('addToCart')
addToCart.addEventListener('click', function(option) {
option.preventDefault();
let num = 0
let cartObject = {
name: jsonResponse.name,
price: jsonResponse.price,
option: select.value,
optionQuantity: num
}
num
console.log(cartObject)
});
Комментарии:
1. просто переместите строку
let num = 0
за пределы функции.. передaddToCart.addEventListener
2. Вся функция запускается при каждом нажатии этой кнопки. Сюда входит строка, в которой вы объявляете
num
. Он объявляется, инициализируется0
, а затем используется при создании объекта. Затем оно увеличивается на единицу (однакоcartObject.optionQuantity
все равно будет равно нулю). После консоли. строка журнала, обаnum
иcartObject
перестают существовать. При следующем нажатии все это происходит снова, точно так же, как и в первый раз, без каких-либо последствий для чего-либо, живущего за пределами этой функции.
Ответ №1:
Вы должны переместить свой let num = 0
за пределы своего функционального блока. Потому что, когда вы вызываете эту функцию каждый раз, когда она выполняется let num = 0
. Вот почему num
никогда не меняется.