2017-05-15 53 views
0

任何人都可以解释为什么最后一行结果在NaN? 'userScore'是span元素的一个对象,当我没有实现localStorage部分时,类似的操作可以很好地工作。提前谢谢了!HTML5网络存储整数变成NaN

var score; 
    score = 20 - (parseInt(turnNr.innerHTML) - bricks.length/2) * 
    1.2; 
    if (score >= 0.5) { 
     score = Math.round(score); 
    } else { 
     score = 0; 
    } 

    if (localStorage.totalScore) { 
     localStorage.totalScore = parseInt(localStorage.totalScore) + 
     score; 
    } else { 
     localStorage.totalScore = score; 
    } 
    userScore.innerHTML = localStorage.totalScore; 
+2

这是存储不是如何本地工作。 [阅读文档](https://developer.mozilla.org/en-US/docs/Web/API/Storage)。 –

+0

使用localStorage.getItem()从localstorage检索日期。 –

+0

那么'parseInt(localStorage.totalScore)'产生'NaN'?你做了什么调试?你的变量有什么值? – Bergi

回答

0

您的代码无法从错误中恢复。在localStorage中存储"NaN"后,执行代码时它永远不会消失。这是因为即使存在无效值,if (localStorage.totalScore)也会运行。

你要更改您的代码

if (parseInt(localStorage.totalScore)) { // NaN is falsy and will be ignored 
    localStorage.totalScore = parseInt(localStorage.totalScore) + score; 
} else { 
    localStorage.totalScore = score; 
} 
userScore.innerHTML = localStorage.totalScore; 
+0

啊,我明白了,就是这样!经过测试,它工作完美!非常感谢队友! – Cerdarius

+0

@Cerdarius请[接受答案](http://stackoverflow.com/help/someone-answers)然后 – Bergi