попытка обновить значение объекта при каждом нажатии, но не работает — javascript

#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 никогда не меняется.