我一直在努力localStorage
工作,但仍然受到错误的困扰。我已经看到了几种使用本地存储的方法,并尝试了几种,但都没有按预期工作。
我最近的尝试是基于W3Schools 的这个例子,但它似乎也不起作用。
var difficulty = 0;
var highscore = 0;
function retrieveLocalData() {
if(typeof(Storage)!=="undefined") {
if(localStorage.highscore) { highscore = parseInt(localStorage.highscore); }
if(localStorage.difficulty) { difficulty = parseFloat(localStorage.difficulty); }
}
}
function storeLocalData() {
if(typeof(Storage)!=="undefined") {
localStorage.highscore = highscore;
localStorage.difficulty = difficulty;
}
}
我希望storeLocalData()
检查是否支持 localStorage,如果支持,则将highscore
and存储difficulty
在localStorage
. 我希望retrieveLocalData()
检查是否支持 localStorage,检查是否highscore
或difficulty
分别已存储,如果是,则检索值,分别使用parseInt
和将它们解析为 Int 或 Float parseFloat
。
在测试期间,highscore
输出为 NaN。
我的期望和假设不正确吗?我不确定为什么会发生这种行为。谢谢。
编辑1:
我删除了所有 localStorage 值,并在修改值之前或之后添加console.log()
了highscore
每个点的值。正如预期的那样,在输入之前retrieveLocalData()
的值是 0,但是在退出之后retrieveLocalData()
的值是 NaN。
编辑2:
我根据 apsillers 的建议更改了我的if
声明。if(!isNaN(parseInt(localStorage.highscore)))
代码现在工作正常:)