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>
3 Réponses :
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) } }
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
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.
Merci!!! Cela a fonctionné !!! Merci Omg!
@William Vous êtes les bienvenus. Vous pouvez voter et accepter la réponse :)
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)
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 utiliserparseInt (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
)