2017-05-15 1 views
0

Quelqu'un peut-il expliquer pourquoi la dernière ligne génère NaN? 'userScore' est un objet d'un élément span et des opérations similaires fonctionnent parfaitement lorsque je n'implémente pas la partie localStorage. Merci d'avance!L'espace de stockage Web HTML5 devient 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

Ce n'est pas comment fonctionne le stockage local. [Lire la documentation] (https://developer.mozilla.org/en-US/docs/Web/API/Storage). –

+0

Utilisez localStorage.getItem() pour récupérer la date de localstorage. –

+0

Donc 'parseInt (localStorage.totalScore)' donne 'NaN'? Quel débogage as-tu fait? Quelles sont les valeurs de vos variables? – Bergi

Répondre

0

Votre code ne peut pas récupérer des erreurs. Une fois que vous avez enregistré "NaN" dans localStorage, il ne disparaîtra jamais lorsque le code est exécuté. En effet, if (localStorage.totalScore) s'exécutera même s'il existe une valeur non valide.

Vous voulez changer votre code pour

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

Ah, je vois, c'est tout! Testé et ça a fonctionné parfaitement! Merci beaucoup mon pote! – Cerdarius

+0

@Cerdarius S'il vous plaît [accepter la réponse] (http://stackoverflow.com/help/someone-answers) alors – Bergi