我创建了一个本地存储功能来保存然后从cookie中加载购物车,但是当我尝试在另一台机器上访问此页面时,它会给我错误。如何添加回退到这些函数,以便如果在服务器或本地的其他计算机上查看代码,它也将在那里工作并基本上存储新的cookie。
ShoppingBasket.saveCart = function() {
localStorage.setItem("shoppingCartCookie", JSON.stringify(this.cart));
};
// function to load cart
ShoppingBasket.loadCart = function() {
this.cart = JSON.parse(localStorage.getItem("shoppingCartCookie"));
};
这是导致问题的代码......
ShoppingBasket.addItemToCart = function(name, price, count) {
for (var i in this.cart) {
if (this.cart[i].name === name) {
this.cart[i].count += count;
this.saveCart();
return;
}
}
var item = new this.Item(name, price, count);
this.cart.push(item);
this.saveCart();
};
它会导致错误消息Cannot read property 'push' of null
答案 0 :(得分:0)
探测到你的购物车在localstorage中为null 检查购物车是否为null然后设置为新数组
ShoppingBasket.loadCart = function() {
this.cart = JSON.parse(localStorage.getItem("shoppingCartCookie")) || [];
};
答案 1 :(得分:0)
首先需要检查密钥是否存在于本地存储中 -
if ("shoppingCartCookie" in localStorage) {
//Your logic
}else{
//Your logic to create cookie
}
本地存储是特定于机器的,因此对于每个macjine,您首先需要存储shoppingCartCookie,然后只有您才能访问它。
希望这会对你有所帮助。