繁体   English   中英

localStorage.setItem() 不工作:不写

[英]localStorage.setItem() not working: not writing

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

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

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

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

Storage {length: 0}

为什么它不起作用???

编辑: readBooks是 object。

您只能将字符串存储到本地存储中,如果要存储 object,则需要先 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));

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

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

JSON.parse(数据)

请记住,Stringify IN 存储,Parse OUT 存储。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM