如何在JS中使Web存储持久化?

时间:2014-05-31 20:51:01

标签: javascript cordova local-storage storage web-storage

我有一个小型测验应用,这是一个跨平台的移动应用,我计划在Android,iOS和WP8上运行。我想存储一个本地高分,它将跟踪用户有多少分,如果他/她比已经存储的高分更好,则更新当前的高分。虽然,我希望高分能够持久,我的意思是,每次用户打开应用程序时,我希望最后一个高分能够出现,并将其与新的测验分数进行比较。这意味着,我不想在每次关闭应用程序后删除高分。我还想第一次运行应用程序时,将高分设置为0,所以显然用户第一次完成测验会获得新的高分。

到目前为止我有这些代码:

scoredb.js

// Wait for device API libraries to load
document.addEventListener("deviceready", initScoreDB, false);

// Device APIs are available
function initScoreDB() {
    window.localStorage.setItem("score", 0);
    highscore = window.localStorage.getItem("score");
}

main.js

var correct = 0;
var highscore;

// In between I have some code that keeps incrementing
// correct variable for each correct answer.
if (correct > highscore) {
                window.localStorage.setItem("score", correct);
                highscore = correct;
}

一旦应用程序启动,它似乎确实可以正常工作。我在模拟器中做了三次测验,它保持了应有的分数。虽然,每次打开应用程序时,高分都会重置为0.我想这是因为我在设备准备就绪时调用了initScoreDB,并且我将得分初始化为0并将该值赋予高分。有人可以帮助我仅在应用程序第一次运行时将分数初始化为0,并且所有其他时间将最新的分数保持为当前的高分,并且每次将其与测验时获得的分数进行比较完了。如果有人可以帮助我,我会很高兴。

1 个答案:

答案 0 :(得分:0)

这样的事情:

function initHighScore() {
    if (window.localStorage.getItem("score")) {
        highscore = window.localStorage.getItem("score");
    } else {
        highscore = 0;
    }
}

我将方法重命名为initHighScore,因为它没有将分数保存在本地存储中(留给应用程序的其他部分)。