【发布时间】:2018-01-07 02:48:31
【问题描述】:
我正在创建一个购物车,用户可以在其中将商品添加到购物车。一旦用户单击添加到购物车按钮,我想将产品 ID、名称、价格和数量保存到本地存储,然后在购物车页面上检索它们。所以我尝试了这个
var cart = new Array;
if (cart != []) {
cart = JSON.parse(localStorage["cart"]);
}
$('#addtocart').on('click', function(e) {
var qty = document.getElementById("p-qty").value;
var li = $(this).parent();
var product = {};
product.id = productid;
product.name = document.getElementById("nomenclature").innerHTML;
product.price = document.getElementById("productprice").innerHTML;
product.quantity = qty;
addToCart(product);
});
function addToCart(product) {
// Retrieve the cart object from local storage
if (localStorage) {
var cart = JSON.parse(localStorage['cart']);
cart.push(product);
localStorage.setItem('cart', JSON.stringify(cart));
}
// window.location = "html/cart.html"
}
但我不断收到此错误
未捕获的类型错误:cart.push 不是函数
我做错了什么,我该如何解决?
【问题讨论】:
-
cart是对象还是数组? -
@OmarEinea 我希望它是一个数组,以便我可以将其他数组推送到它
-
我希望它是一个数组,你想要什么和它实际上是两个不同的东西。让我们从它是什么开始,然后看看我们是否可以帮助您实现您想要的。那么现在
cart是什么类型的呢?如果您不确定,只需将localStorage['cart']的内容粘贴到您的问题中,我们会为您解决。只需执行console.log(localStorage['cart']),然后将其复制并粘贴到问题中。 -
那么你首先在哪里使用数组创建本地存储键?或者你假设它会知道它是一个数组?
-
@chris 但他使用了
JSON.stringify()和JSON.parse(),不是吗?对不起,我没明白你的意思。
标签: javascript jquery arrays