[英]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.