Вот мой код, где, если возникла проблема с:
// 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, она отменит текущую корзину.
Может кто-нибудь мне помочь?