簡體   English   中英

我無法在我的購物車中將我的產品減少 1,因為我遇到了一個未定義的問題

[英]i can't get to reduce my product by 1 in my cart because i got an undefined problem

這是我的錯誤,我知道為什么會出現這個錯誤,我真的是 js 新手,似乎不知道為什么會發生這種情況。 如果你們可以幫助我,我將非常感激,在此先感謝

TypeError: Cannot read property 'qty' of undefined
TypeError: Cannot read property 'price' of undefined

這是我的購物車 model

module.exports = function Cart(oldCart){
this.items = oldCart.items || {};
this.totalQty = oldCart.totalQty || 0;
this.totalPrice = oldCart.totalPrice || 0;

this.add = function(item, id){
    var storedItem = this.items[id];
    if(!storedItem){
        storedItem = this.items[id] = {item: item, qty: 0, price: 0};
    }
    storedItem.qty++;
    storedItem.price = storedItem.item.price * storedItem.qty;
    this.totalQty++;
    this.totalPrice += storedItem.item.price;
};

this.reduce = function(id){
    this.items[id].qty--;
    this.items[id].price -= this.items[id].item.price;
    this.totalQty--;
    this.totalPrice -= this.items[id].item.price;

    if(this.items[id].qty <= 0){
        delete this.items[id];
    }
}

this.removeItem = function(id){
    this.totalQty -= this.items[id].qty;
    this.totalPrice -= this.items[id].price;
    delete this.items[id];
}

this.generateArray = function(){
    var arr = [];
    for (var id in this.items){
        arr.push(this.items[id]);
    }
    return arr;
};

};

最有可能的是,您傳入的那個id的項目在數組中不存在。 您可以添加一個檢查以僅在該項目存在時嘗試刪除該項目,如下所示:

this.reduce = function(id){
    if(this.items[id]) {
        this.items[id].qty--;
                this.items[id].price -= this.items[id].item.price;
                this.totalQty--;
                this.totalPrice -= this.items[id].item.price;

                if(this.items[id].qty <= 0){
                    delete this.items[id];
                }
    } else 
        console.log(“item does not exist”)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM