问题描述
我无法在我的项目输入值更改的同时更新我的 GrandTotal 值。仅当我将另一个项目添加到购物车时,grandTotal 才会更新。如何在不添加项目的情况下更新我的 grandTotal?我试过将我的 GrandTotal 变量放在数量变化事件块中,但每次数量变化时,总数只会增加而不是减少。我还尝试将事件侦听器切换为“更改”而不是“单击”,但仍然存在相同的问题。
let grandTotal = 0;
let addBtn;
let subBtn;
let cartElements;
let parsed;
for(let i = 0; i < cartElement.length; i++){
cartElements = cartElement[i];
quantities = qtyElement[i];
prices = priceElement[i];
addBtn = addBtns[i];
subBtn = subBtns[i];
parsed = parseFloat(prices.value);
grandTotal += parsed;
}
cartElements.addEventListener('click',function(e) {
let buttonClicked = e.target;
if(buttonClicked.innerText === "+"){
quantities.value++;
prices.value = quantities.value * price;
} if(buttonClicked.innerText === "-"){
quantities.value--;
prices.value = quantities.value * price;
}
});
grandTotalInput.value = grandTotal;
}
<form class="cart-form">
<h1>shopping cart</h1>
</form>
<form id="totalContainer">
</form>
<div class="grandTotal">
<input name="grandTotalInput" id="grandTotalInput" type="number" disabled="">
</div>
解决方法
您需要更新此函数内的总计:
quantities.addEventListener('click',function(){
let qty = parseFloat(quantities.value);
prices.value = qty * price;
});