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,她会否决当前的购物车。

有人能帮我吗?

更改:

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

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

相关内容

最新更新