未捕获的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"}}]};