本地存储无法识别阵列名称

时间:2018-10-24 20:08:17

标签: javascript jquery local-storage

我正在尝试在购物车中保存一系列“项目”。但是在其他部分继续时,会发生错误“未捕获的TypeError:无法读取null的属性'items'”,请帮助该代码出问题

var existing_cart = localStorage.getItem("cart");
existing_cart = JSON.parse(existing_cart);
console.log(existing_cart);

if (existing_cart.items instanceof Array) {

  existing_cart.items.push({
    'article_number': article_no,
    'quantity': quantity,
    'item_name ': item_name
  });
  console.log(existing_cart);
  localStorage.setItem("cart", JSON.stringify(existing_cart));

} else {

  var products = [{
    'article_number': article_no,
    'quantity': quantity,
    'item_name ': item_name
  }];
  var cart = {
    'items': products
  }
  localStorage.setItem("cart", JSON.stringify(cart));
  toastr.success('Have fun storming the castle!', 'Miracle Max Says');
}

2 个答案:

答案 0 :(得分:0)

第一次运行代码时,本地存储中将没有任何内容,因此existing_cart将是null。您需要检查一下。

更改

if (existing_cart.items instanceof Array) {

收件人:

if (existing_cart) {

答案 1 :(得分:0)

var existing_cart = localStorage.getItem("cart") || '{"items":[]}';

在第一次运行代码的情况下,localStorage可能没有该元素,在这种情况下,它将返回null或未定义。在这种情况下,您可以将其默认为JSON,这样就可以使逻辑流不遇到空指针异常。