我目前正在开发一款小型浏览器游戏,我正在使用HTML localStorage来保存一些数据。
问题:
我有一个空数组,我稍后将.push()
一些数据输入。我将此数组存储在localStorage中但是当我尝试从本地存储中读取时它不起作用。
Chrome开发者工具控制台给出了以下错误: 尝试解析localStorage中的数据时出现“Uncaught SyntaxError:Unexpected token u”。
这是我正在使用的代码:
var allContracts = [];
localStorage["allContracts"] = JSON.stringify(allContracts);
allContracts = JSON.parse(localStorage["allContracts"]);
代码多于此,但没有任何代码以任何方式与这些代码进行交互。
是否有一个我不知道的localStorage或JSON的怪癖并导致了这个问题? (我对JSON或localStorage不太熟悉) 我应该以不同的方式做这件事吗? 或者我只是错过了一个明显的错误?
提前致谢:)
答案 0 :(得分:0)
我自己刚刚开始使用localStorqage,但看起来你应该使用window.localStorage.setItem()和window.localStorage.getItem()
答案 1 :(得分:0)
最好的方法是使用var allContracts = [];
// setter
localStorage.setItem("allContracts", JSON.stringify(allContracts));
//getter
var allContracts = JSON.parse(localStorage.getItem("allContracts"));
界面为您提供的方法。它有localStorage
和localStorage = [] // transform the default localstorage into an array
方法,为什么不用来保护自己?
localStorage.setItem(key, value)
使用您的代码片段,您将使用自己的值覆盖{{1}}全局对象,因此您失去了功能。
你这样做:
{{1}}
你需要这个:
{{1}}
更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
答案 2 :(得分:-1)
你应该使用
localStorage.setItem('allContracts', JSON.stringify(allContracts));
localStorage.getItem('allContracts');
此处有更多详情: https://developer.mozilla.org/en-US/docs/Web/API/Storage