javascript - 我的 displayCart() 方法似乎永远不会执行,我不知道为什么
问题描述
这是我网站购物车的代码。除了 displayCart() 方法外,一切正常。没有语法错误,但它永远不会被执行,但我不知道为什么。
let productsPage = document.querySelectorAll('.addToCart');
let products = [
{
name: 'wheyProtein',
tag: 'whey',
price : 799,
inCart: 0
},
{
name: 'wheyProtein1',
tag: 'whey1',
price : 299,
inCart: 0
},
{
name: 'wheyProtein2',
tag: 'whey2',
price : 299,
inCart: 0
},
{
name: 'wheyProtein3',
tag: 'whey3',
price :349,
incart: 0
},
{
name: 'wheyProtein4',
tag: 'whey4',
price : 330,
inCart: 0
},
{
name: 'wheyProtein5',
tag: 'whey5',
price : 299,
inCart: 0
},
]
for(let i=0; i<productsPage.length;i++){
productsPage[i].addEventListener('click',() => {
cartNumbers(products[i]);
totalCost(products[i]);
})
}
function onLoadCartNumbers(){
let productNumbers = localStorage.getItem('cartNumbers');
if(productNumbers){
//document.querySelector('.cart span').textContent = productNumbers;
}
}
function cartNumbers(product){
let productNumbers = localStorage.getItem('cartNumbers');
productNumbers = parseInt(productNumbers);
if(productNumbers){
localStorage.setItem('cartNumbers', productNumbers+1);
//document.querySelector('.span').textContent=productNumbers+1;
}else{
localStorage.setItem('cartNumbers', 1);
//document.querySelector('.span').textContent=1;
}
setItem(product);
}
function setItem(product){
let cartItems = localStorage.getItem('ProductsInCart');
cartItems = JSON.parse(cartItems);
if(cartItems != null){
if(cartItems[product.tag] == undefined){
cartItems = {
...cartItems,
[product.tag]: product
}
}
cartItems[product.tag].inCart += 1;
}else{
product.inCart = 1;
cartItems={
[product.tag]: product
}
}
localStorage.setItem("ProductsInCart",JSON.stringify(cartItems));
}
function totalCost(product){
console.log("products price is",product.price);
console.log("working");
let cartCost = localStorage.getItem('totalCost');
console.log("my cartcost is", cartCost);
if(cartCost != null){
cartCost = parseInt(cartCost);
localStorage.setItem("totalCost", cartCost+ product.price);
}else{
localStorage.setItem("totalCost", product.price);
}
}
function displayCart() {
console.log("working cart");
let cartItems = localStorage.getItem("productsInCart");
cartItems = JSON.parse(cartItems);
let productContainer = document.querySelector("products-container");
let cartCost = localStorage.getItem('totalCost');
if(cartItems && productContainer){
productContainer.innerHTML = '';
Object.values(cartItems).map(item =>{
productContainer.innerHTML += `
<div class="product">
<ion-icon name="close-circle"><ion-icon>
<img src="${item.tag}.jpg">
<span>${item.name}</span>
</div>
<div class ="price">${item.price},00</div>
<div class ="quantity"><ion-icon class = "decrease" name = "arrow-dropleft-circle"></ion-icon><span>${item.incart}</span><ion-icon class="increase" name ="arrow-dropright-circle"></ion-icon></div>
<div class="total">
${item.incart * item.price},00
</div>
`
});
productContainer.innerHTML += `
<div class="baskerTotalContainer">
<h4 class="baskerTotalTitle">
Basket Total
</h4>
<h4 class = "baskerTotal">
R${cartCost},00
</h4>
`;
}
}
onLoadCartNumbers();
displayCart();
我在代码末尾调用该方法,但我在 displayCart() 方法中尝试了一个 console.log,它只是确认它永远不会被执行。
解决方案
您可以尝试从第 41 行到第 46 行注释 bucle,然后如果 displayCart() 被执行,您就会知道问题出在 bucle 上。
推荐阅读
- ruby - 在 String 类中使用 each_char 迭代后出现冻结错误。有什么修复吗?
- java - 你能告诉我如何模拟休息模板吗
- assembly - 如何从此站点读取 x86 指令表
- sql - SQL 需要很长时间才能更新表
- c# - 我应该在 Asp.Net Core MVC 项目中将常用实用程序方法放在哪里?
- firebase - 使用 Google gmail 身份验证的 React-Native App 访问 Firestore
- angular - 剑道日期选择器角度js
- php - 如何在其他位置打印 SMTP 调试?
- elasticsearch - 在elasticsearch中使用ngram tokenizer通过部分用户名或名称进行用户搜索的正确方法
- azure-cosmosdb - 使用 Mongo API 查询 Cosmos - LookUp 操作