【问题标题】:cannot increment a localStorage value不能增加 localStorage 值
【发布时间】:2014-05-08 08:50:34
【问题描述】:

每当 if 语句中的条件为真时,我都会尝试增加我的 localStorage 值,但似乎我无法正确执行此操作。尽了一切可能。这是我的代码,用于检查并增加值。

for(var j = 0; j < inputArray.length; j++){
    for(var k = 0; k < this.probsSolved.length; k++){
        if(inputArray[k] == this.probsSolved[j] ){

            //increment the localStorage value here

            **this.storage.set(probSolKey,parseInt(this.storage.get(probSolKey)) + 1);**

            if(this.storage.get(probSolKey) >= totalProbToSolve){
                this.storage.set(achkey,1);
                this.triggerAchievements(id,name);
                return;
            }
        }
    }
}

所以我有一个我正在使用的 ImpactJS 引擎的 localStorage 插件。我正在尝试增加我在函数中作为参数字符串传递的 probSolKey。每当满足条件时,我都会尝试将自身增加 1。我不知道如何正确实现这一点。任何人都可以帮助我解决这个问题,将不胜感激!

做一些调试我发现了这个:

console.log(this.storage.get(probSolKey));

抛出一个奇怪的“NaN”值。

【问题讨论】:

    标签: javascript html local-storage impactjs


    【解决方案1】:

    当您存储要增加的属性的值时,您以为您存储了一个数字,但实际上并没有。

    您存储了一个假定为数字的值,因此将其转换为 1,但由于无法将值解析为数字,因此转换失败。

    这就是 NaN 的意思,不是数字,不能被解析为数字的东西。

    【讨论】:

    • 不,它不起作用。 :( 当我执行 console.log("counter" +this.storage.get(probSolKey)) 时,它会将计数器 NaN 作为输出并且不会增加值。知道吗?
    • 你能不能做一个 console.log(this.storage.get(probSolKey) 告诉我们你得到了什么?
    • 当然 console.log(this.storage.get(probSolKey)) 会抛出一个奇怪的“NaN”值。我不知道那是什么意思!
    • NaN 代表 Not A Number,这是您尝试将某个值转换为数字时得到的结果,但转换失败。所以你得到了这个,因为每当你存储这个值时,你以为你在存储一个数字,但是你存储的东西应该是一个数字,但不能被解析为一个。
    • 好吧,我以某种方式尝试将我的值与“NaN”.concat(value) 进行比较,更改了 if 语句 if(this.storage.get(probSolKey) == "NaN".concat(totalProbToSolve) )它比较好,但仅适用于第一个实例,即我在第一次条件为真时将 NaN1 作为我的值,但下次当条件为真时,我的 localStorage 值保持在 NaN1 而不是 NaN2 这就是我按照你的建议做的this.storage.set(probSolKey,'' +parseInt(this.storage.get(probSolKey))+1);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多