【发布时间】:2020-10-20 00:50:25
【问题描述】:
我正在构建一个包含两个页面和两个 Javascript 文件的电子商务网站,即:(index.html、cart.html、apps.js 和 cart.js)。单击删除按钮后,如何从购物车 (cart.html) 中减去总价?
这是我的代码:
// cart functionality
table.addEventListener("click", event => {
if (event.target.classList.contains('fa-close')) {
let removeItem = event.target;
console.log('df', removeItem);
let id = removeItem.dataset.id;
console.log(id);
table.removeChild(removeItem.parentElement.parentElement);
var obj = JSON.parse(localStorage.getItem("cart")) || {}; //fetch cart from storage
var items = obj || []; //get the products
for (var i = 0; i < items.length; i++) { //loop over the collection
if (items[i].id === id) { //see if ids match
items.splice(i, 1); //remove item from array
break; //exit loop
}
}
localStorage.setItem("cart", JSON.stringify(obj)); //set item back into storage
//decreasing the cart length
var cal = JSON.parse(localStorage.getItem('cart'));
if (cal.length != 0) {
cart_n.innerHTML = `[${cal.length}]`;
} else {
cart_n.innerHTML = '';
}
//subtractTotal cart
cal.find(item => {
tempTotal = 0;
tempTotal = item.price * item.id
})
row.innerHTML = tempTotal;
}
});
【问题讨论】:
-
似乎是什么问题?您是否在控制台中收到任何错误?当您似乎应该使用
.forEach时,您还使用了.find,您在该循环中的每次迭代中将tempTotal设置为0,因此新值将只是循环中的最后一个值。您将price与id相乘,这似乎没有多大意义。 -
我在控制台中没有收到任何错误。请说乘号有误,但减号是我在代码中写的
-
我认为我的问题是循环数组,因为如果我点击删除按钮它会给我错误的总数但是当我刷新页面时它现在会计算正确的总数。
标签: javascript html json