Моя функция добавления в корзину заменяет товары в корзине вместо добавления

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть массив, в котором хранятся объекты товаров, я сохраняю сведения о продукте в хранилище сеанса, а затем получаю сведения и использую эти параметры для моей функции добавления в корзину, но вместо добавления товаров она заменяет последний элемент в массиве новым.

Если я вызываю функцию добавления в корзину изолированно и задаю ей параметры, она работает нормально, но как только я вызываю ее из другой функции, она не добавляет, а заменяет элементы в корзине

Это моя функция добавления в корзину

 //add item to cart
function addToCart(name, type, price, size, count){

    for(var i in cart){
        if(cart[i].name === name){
            cart[i].count  = count;
            return;
        }
    }
        var product = new Product(name, type, price, size, count);
        cart.push(product);
        saveCart();
}

  

И функция, которая вызывает add to Cart

 //set up for add to cart function
function cartSetUp(){

    var name = sessionStorage.getItem("product name");
    var price = JSON.parse(sessionStorage.getItem("product price"));
    var type = sessionStorage.getItem("product type");
    var image = sessionStorage.getItem("product image");
    var count = $("#product-quantity").val();
    var size = $('input[name=size]:checked').val();


    addToCart(name, type, price, size, count)

}

  

Комментарии:

1. Что такое saveCart() ? Когда вы пошагово просматриваете код в своем отладчике, где конкретно возникает проблема?

2. вы должны взять объект cart obj из сеанса и перейти в функцию add cart, только тогда он сможет добавить существующую корзину

3. @David save cart() сохраняет корзину в локальном хранилище

4. function saveCart(){ localStorage.setItem("shopping cart", JSON.stringify(cart)); }

5. Я полагаю, что проблема кроется в коде, который вы не предоставили. Попробуйте добавить команду console.log(cart) before cart.push(product) , а также сразу после загрузки корзины из локального хранилища. Я подозреваю, что вы иногда теряете последний элемент в своей корзине между загрузкой корзины из localStorage и добавлением туда нового продукта