首页 > 解决方案 > jQuery中的变量问题(未定义)即使我检查它是否存在

问题描述

这是我的代码,如果遇到问题:

// WORKS
    var cart;
    var productlist = JSON.parse(localStorage.getItem('cart'));
// But if localStorage is empty go an error "productlist = undefined
// This was the solution, where I'm thinking about, but without success
    if (typeof productlist !== "undefined") {
        var productlist = JSON.parse(localStorage.getItem('cart'));
    }else{
        var productlist = [];
    }

    $('#addtocard').on('click', function(e) {

        $('#bill-table > tbody > tr').each(function() {

            if(product === undefined) {
                var product = {};
            }

            product.naam = $(this).children('.naam').html();
            product.type = $(this).data('type');
            product.id = $(this).data('productid');

            productlist.push(product);
        });

        console.log('--------------');
        console.log('ProductList:'+JSON.stringify(productlist));
        console.log('LocalStorage:'+localStorage.getItem('cart'));

        localStorage.setItem("cart", JSON.stringify(productlist));
        $('#json_producten').val(JSON.stringify(productlist));

        e.preventDefault();
    });

    ////////////////////////////////////////////////////
    $('#json_producten').val(localStorage.getItem('cart'));

    console.log('--------------');
    console.log('ProductList:'+JSON.stringify(productlist));
    console.log('LocalStorage:'+localStorage.getItem('cart'));

哪个部分起作用:如果您将单个产品放入购物车,则没有问题。如果您将一件商品两次放入购物车中,则没有问题。然后在一个数组中返回两个产品。

问题是,如果您将产品一放入购物车,然后转到另一个页面,隐藏的输入字段“#json_producten”会显示正确的购物车(产品一在里面)但是如果您在产品 2 上按 addtocard btn,她会否决当前购物车。

有人可以帮我吗?

标签: jqueryarraysjsonlocal-storage

解决方案


改变:

if (typeof productlist !== "undefined") {
    var productlist = JSON.parse(localStorage.getItem('cart'));
}else{
    var productlist = [];
}

到:

if(localStorage.getItem('cart') == null){
    productlist = [];
}else{
    productlist = JSON.parse(localStorage.getItem('cart'));
}

这是解决方案,但如果有更好的方法,请告诉我!


推荐阅读