【问题标题】:localStorage.setItem() not working: not writinglocalStorage.setItem() 不工作:不写
【发布时间】:2020-07-25 03:28:22
【问题描述】:

我正在尝试创建一个使用 localStorage 的图书跟踪器应用程序。但是,当我设置一个项目时 - 发生的情况是没有给出错误消息,但它没有记录到 localStorage。这是我的代码:

      
      //var currentId = parseInt(localStorage.getItem("currid"))+1;
      
      var nameOfItem = "bookPackage"+id;
      localStorage.setItem(nameOfItem, readBooks);

假设currid已经在localStorage中预设为一个数字。

当我进入控制台并输入localStorage 时,结果如下:

Storage {length: 0}

为什么不工作???

编辑:readBooks 是一个对象。

【问题讨论】:

  • 什么readBooks
  • readBooks 中存储了什么?
  • 什么是readBooks?一个东西?一个数组?
  • 对不起,readBooks 是一个对象。

标签: javascript html local-storage


【解决方案1】:

你只能将字符串存储到本地存储中,如果你想存储一个对象你需要先JSON.stringify(obj)。

var str = "22";
localStorage.setItem('key', str);
var getStr = localStorage.getItem('key');
console.log(parseInt(getStr));

let obj = {a: 'a1', b: 'a2'};
localStorage.setItem('key2', JSON.stringify(obj));
let getObject = localStorage.getItem('key2');
console.log(JSON.parse(getObject));

【讨论】:

  • OP 在哪里说他有 obj 而不是字符串?我错过了什么吗?
  • 我只是想帮助 OP 了解本地存储的可能性
  • 成功了!!!抱歉 - 我更新了问题。 readBooks 是一个对象。谢谢!
【解决方案2】:

正如@sonEtLumiere 已经提到的,您只能将字符串存储到本地/会话存储中,因此如果您有对象/数组,则必须在将它们存储到本地/会话存储之前使用 JSON 对它们进行字符串化。我不确定“readBooks”是什么,但由于它是复数,我假设它是一个数组。因此,您需要使用 JSON.stringify(data) 来存储该信息。

当您需要从本地/会话存储中检索对象/数组数据时,您必须使用 JSON 解析出数据。

JSON.parse(数据)

记住,Stringify IN 到 storage,Parse OUT of storage。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2019-06-15
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多