【发布时间】:2018-02-22 16:01:46
【问题描述】:
我正在尝试创建一个功能来重置某种游戏的分数,但我遇到了问题。
这是我的功能:
function resetScore() {
console.log("q " + q + " score " + score);
localStorage.setItem("q", 1);
localStorage.setItem("score", 0);
console.log("q " + q + " score " + score);
window.localStorage.clear();
console.log("q " + q + " score " + score);
setTimeout(function () {
window.location.href = "quiz.xhtml";
}, 300);
如您所见,我正在尝试不同的方法: 第一个是将本地存储设置为默认值。 第二种是简单地清除localStorage。
这是 console.log 的输出:
quiz.js:27 q 2 得分 1
quiz.js:30 q 2 得分 1
quiz.js:32 q 2 得分 1
如果我重新加载页面,console.log 是:
quiz.js:27 q 1 得分 0
quiz.js:30 q 1 得分 0
quiz.js:32 q 1 得分 0
清除后最后一个console.log不为空可能是因为我有一个函数可以将本地存储设置为默认值,如果它是== null。
如您所见,清除后我将location.href更改为测验页面(我的重置功能在我的主页中)。当我在 Chrome 上尝试时,我的 localStorage 在测验页面加载时设置为默认值。但是我正在为 ePub 执行此操作,当我在 iBooks 上尝试此操作时,当我到达测验页面时,它仍然具有本地存储的旧值。我需要回到主页,然后再到测验页面才能最终获得清除的 localStorage。
有什么办法解决这个问题吗?
编辑:
这是带有更新变量的函数:
function resetScore() {
console.log("q " + q + " score " + score);
localStorage.setItem("q", 1);
q = parseInt(localStorage.getItem("q"), 10);
localStorage.setItem("score", 0);
score = parseInt(localStorage.getItem("score"), 10);
console.log("q " + q + " score " + score);
setTimeout(function () {
window.location.href = "quiz.xhtml";
}, 300);
}
【问题讨论】:
-
您的代码工作正常.. 您正在记录
q和score,仅仅因为您清除了 loclastorage 并不意味着您要删除用于设置 localstorage 的变量。根本没有理由重新加载页面..在清除本地存储后执行此操作..console.log("q " + localStorage.getItem('q') + " score " + localStorage.getItem('score')); -
感谢您的回答。那是一个愚蠢的错误。现在我用新的 localStorage 值设置变量,但行为没有改变。在 iBooks 中,测验仍以旧值开始。
-
你能发布你更新的函数吗(不删除原来的,把它发布在下面作为编辑)..
-
我已经用更新的函数进行了编辑。
标签: javascript local-storage epub