Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的“添加到购物车”功能是替换购物车中的项目,而不是添加_Javascript_Jquery - Fatal编程技术网

Javascript 我的“添加到购物车”功能是替换购物车中的项目,而不是添加

Javascript 我的“添加到购物车”功能是替换购物车中的项目,而不是添加,javascript,jquery,Javascript,Jquery,我有一个存储产品对象的数组,我将产品详细信息存储在会话存储中,然后获取详细信息并将这些参数用于我的“添加到购物车”功能,但它不是添加项目,而是用新项目替换数组中的最后一个项目 如果我单独调用addtocart函数并为其提供参数,那么它工作正常,但一旦我从另一个函数调用它,它就不会添加,而是替换购物车中的项目 这是我的“添加到购物车”功能 //add item to cart function addToCart(name, type, price, size, count){ for(

我有一个存储产品对象的数组,我将产品详细信息存储在会话存储中,然后获取详细信息并将这些参数用于我的“添加到购物车”功能,但它不是添加项目,而是用新项目替换数组中的最后一个项目

如果我单独调用addtocart函数并为其提供参数,那么它工作正常,但一旦我从另一个函数调用它,它就不会添加,而是替换购物车中的项目

这是我的“添加到购物车”功能

//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)

}


什么是
saveCart()
?当您在调试器中单步执行代码时,问题具体发生在何处?您应该将cart obj从会话中取出并传递到add cart函数中,然后只有它才能附加现有的cart@Davidsave cart()将购物车保存在本地存储中
函数saveCart(){localStorage.setItem(“购物车”,JSON.stringify(购物车));}
我相信问题出在您未提供的代码中。请尝试在
购物车推送(产品)之前添加
控制台.log(购物车)
命令,并且在您从localStorage加载购物车之后立即加载。我怀疑,在从localStorage加载购物车和将新产品附加到购物车之间,您有时会丢失购物车中的最后一项