1
votes

Incrémenter de 1, puis 10, puis 100?

J'essaie donc d'écrire mon programme là où chaque fois que la fonction est activée, la valeur de «l'argent» dans le stockage local augmente de 1. Quand je l'ai testé, il augmente de 1. Mais la prochaine fois , il a augmenté de 10, puis de 100. Pourquoi? Je n'ai trouvé personne avec le même problème. Voici le code:

<script>
  function changeText() {
    localStorage.setItem("money", localStorage.getItem("money") + 1);
    localStorage.setItem("map", true);
  }
</script>


1 commentaires

Parce que vous faites une concaténation de chaînes plutôt qu'une addition d'entiers: "1" + 1 = "11" . Je pense que vous voudrez utiliser parseInt (localStorage.getItem ("money")) pour convertir votre valeur stockée en un nombre, mais faites attention aux valeurs non initialisées ( parseInt (localStorage.getItem ("je n'existe pas")) == NaN )


3 Réponses :


2
votes

localStorage.getItem ("money") retournera une chaîne, car il ne stocke que la chaîne. Lors de l'ajout de données au stockage, elles sont implicitement converties en chaîne.

Vous pouvez convertir la chaîne en nombre, puis ajouter et stocker la valeur

function changeText() {
  if (localStorage.getItem('money') === null) {
    localStorage.setItem('money', 1)
  } else {
    localStorage.setItem("money", +localStorage.getItem("money") + 1)
  }

}


7 commentaires

Je vais essayer



Ça ne marche pas.


vérifiez d'abord s'il existe une clé appelée money dans localStorage


Il y a. Il dit «manquant» après la ligne 3 de la liste des arguments.


De plus, (+ (localStorage.getItem ("money") + 1)) semble faux, vous devez convertir la valeur de localStorage


@William vérifie la réponse de mise à jour



0
votes

Essayez de faire -

<script>
  function changeText() {
    var money = parseInt(localStorage.getItem("money"));
    localStorage.setItem("money", money + 1);
    localStorage.setItem("map", true);
  }
</script>

parseInt convertit la chaîne en nombre donc si vous passez parseInt ("1") il crachera 1 qui sera de type number. Ensuite, vous pouvez ajouter 1 au numéro.


2 commentaires

Merci!!! Cela a fonctionné !!! Merci Omg!


@William Vous êtes les bienvenus. Vous pouvez voter et accepter la réponse :)



0
votes

Vous y êtes presque! Comme d'autres mentionnés ici, localstorage fonctionne avec des chaînes et pour convertir une chaîne en nombre, utilisez simplement ce qui suit dans votre code pour renvoyer la valeur sous forme de nombre:

<script>
  function changeText() {
    localStorage.setItem("money", Number(localStorage.getItem("money")) + 1);
    localStorage.setItem("map", true);
  }
</script>

Cela devrait fonctionner pour vous: p >

Number(your_string_number)


0 commentaires