HTML5 LocalStorage搞砸了我的变量

时间:2014-05-02 15:48:01

标签: javascript html5 local-storage web-storage

我是HTML和Javascript的新手,为了学习它,我正在制作增量游戏(类似于CookieClicker或CivClicker)。

我试图保存并加载进度,我可以保存得很好,但是当我加载它时,它会正确加载所有变量,但是当我点击按钮来增加变量时,它会一些奇怪的东西,很难解释,我会发布代码,以便你可以再看一下。

JSFiddle Here

function loadProgress() {
    if (typeof (Storage) !== "undefined") {
        progress = localStorage.progress;
        speed = localStorage.speed;
        quality = localStorage.quality;
        isDone = localStorage.isDone;
        totalMoney = localStorage.totalMoney;
        speedCost = localStorage.speedCost;
        gamesSold = localStorage.gamesSold;
        autoclick = localStorage.autoclick;
        autoclickCost = localStorage.autoclickCost;
        currentBugs = localStorage.currentBugs;
        refreshDisplay();
    } else {
        console.log("LocalStore not appliable.")
    }
}

按'设计'直到你达到100%,然后点击“出售你的游戏”#39;然后按“保存进度”,然后按“加载进度”并再次单击“设计”并再次出售游戏,您将看到数字增加非常奇怪,并且根本没有预期。

' ShowMeTheMoney'将在控制台中显示变量,以便您可以验证变量是否已正确存储。

我不知道为什么会发生这种情况,所以如果有人可以帮助那就太棒了。

1 个答案:

答案 0 :(得分:1)

本地存储即Web存储,将值存储为字符串,因此在检索值时需要转换/转换为数字,否则变量将保留为字符串,您将看到连接而不是递增的值。例如,1 + 1变为11而不是2

Updated working fiddle

转换为数字的方法有很多种,一种方法是+方法:

progress = +localStorage.progress;  
speed = +localStorage.speed;    
quality = +localStorage.quality;