未捕获的TypeError:在localStorage中添加JSON时,对象#没有方法’push’
我正在尝试创建一个存储在localStorage中的简单购物车作为JSON,但是在提交表单以将项目添加到购物车时我收到此错误。
未捕获的TypeError:对象#没有方法’push’cart.js:11
这是我的剧本。
var cart = {"cart": {"tuote":{"id":"2", "count": "4"}}}; localStorage.setItem('cart',JSON.stringify(cart)); var localCart = JSON.parse(localStorage.getItem('cart')); console.log(localCart.cart.tuote.id); $("#addToCart").on("submit",function(e){ e.preventDefault(); var update = localCart.cart.push( {"tuote":{"id":"2", "count": "4"}} ); localStorage.setItem('cart',JSON.stringify(update)); var uusiKori = JSON.parse(localStorage.getItem('cart')); for(var i=0; i < uusiKori.cart.length; i++){ console.log(uusiKori.cart.tuote.id); } });
因此,它将名为cart
的条目添加到值{"cart":{"tuote":{"id":"2","count":"4"}}}
到localStorage,并在控制台中记录id
。
但如果我尝试将商品添加到购物车,则没有任何反应。
我究竟做错了什么?
小提琴。
你不能推入一个对象,而是推入一个数组。
您可能希望将购物车结构更改为以下内容:
var cart = {"cart": [ {"tuote":{"id":"2", "count": "4"}} ] };
然后,要添加到此购物车,您需要:
cart.cart.push(newStuff);
(当然,你是从localStorage获取你的购物车,但原理是一样的)
var cart = {"cart": {"tuote":{"id":"2", "count": "4"}}};
cart
不是数组,而是一个Object。 您可以像下面那样更改基本JSON
var cart = {"cart": [{"tuote":{"id":"2", "count": "4"}}]};