2016-12-06 2 views
1

vor kurzem hatte ich ein Problem mit localStorage in JS. Jedes Mal, wenn ich die Taste statt 1 zu var wood; hinzufügen würde der Ausgang würde 1 auf der linken Seite des Ausgangs jedes Mal, wenn ich die Taste gedrückt, also wenn ich die Taste 3 Mal anstelle von Holz = 3 statt 111 stattdessen statt . bitte hilfe.localStorage und Variablen

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 
<p id="output"></p> 
 
<button onclick="collectWood()">collect wood</button> 
 
<script> 
 
var wood = +localStorage.getItem("woodSave"); 
 

 
document.getElementById('output').innerHTML = parseInt(wood); 
 
localStorage.setItem("woodSave", wood); 
 
if(wood >= 1000){ 
 
\t replace = (wood/1000).toFixed(2) + "k"; 
 
\t wood = replace; 
 
\t document.getElementById('output').innerHTML = wood; 
 
} 
 
function collectWood() { 
 
\t wood = wood + 1; 
 
\t document.getElementById('output').innerHTML = wood; 
 
} 
 
</script> 
 
</body> 
 
</html>

+0

Zeichenfolge, keine Nummer – epascarello

+0

@epascarello die Frage ist kein Duplikat von dem, das Sie erwähnen. Das Problem ist eine falsche Zuweisung eines Werts. –

Antwort

0

Ihr Problem ist hier richtig:

replace = (wood/1000).toFixed(2) + "k"; 
wood = replace; 

Was hier geschieht, das ist, wenn wood (eine Zahl) größer oder gleich 1000, Sie einige Mathematik auf die Zahl und geben Sie eine Zeichenfolge zurück und dann nehmen Sie diese Zeichenfolge und weisen Sie diese wieder auf Ihre wood Variable, so dass vorwärts, das ist, was gespeichert und verwendet wird. Sie sollten nur das Ergebnis dieser replace Variable nehmen und es in das DOM einfügen, damit der Benutzer die formatierte Ausgabe sieht, aber der interne Wert bleibt eine Zahl.

Wenn Sie den Code zum ersten Mal ausführen, wird kein Wert gespeichert. Daher müssen Sie darauf vorbereitet sein, ihn zu initialisieren.

Schließlich müssen Sie Ihren Ausgabecode in Ihre Schaltfläche klicken.

Bitte see this Fiddle für eine funktionierende Version mit Kommentaren.

+0

Wissen Sie, was das '+' vor 'localStorage' bedeutet? – lonesomeday

+0

@LiamSperry Siehe meine aktualisierte Antwort und Fiddle. –

+0

@lonesomeday Ich habe das '+' zuerst nicht verstanden. Ich habe meine Antwort aktualisiert. –