Проблема с переменной в jQuery (не определено), даже когда я проверяю, существует ли она - PullRequest
0 голосов
/ 16 марта 2020

Вот мой код, где, если возникла проблема с:

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

Какая часть работает: если вы положите один продукт в корзину, проблем нет. Если вы положите один товар в корзину дважды, это не проблема. Затем верните оба продукта в одном массиве.

Проблема в том, что если вы положите один продукт в корзину, а не go на другую страницу, а в скрытом поле ввода "#json_producten" отобразится правильная корзина (продукт один внутри), но если вы нажмете addtocard btn на продукте 2, она отменит текущую корзину.

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 16 марта 2020

Изменение:

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'));
}

Это решение, но если есть лучший способ, дайте мне знать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...