2016-12-06 67 views
1

所以最近我一直有问题与JS本地存储。每次我按下按钮,而不是加1到var wood;,输出会在每次按下按钮时在输出的左侧添加1,所以如果我按下按钮3次而不是木= 3,它将等于111 。请帮忙。localStorage和变量

<!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

字符串,不是数字 – epascarello

+0

@epascarello问题不是你提到的问题的重复。问题是价值错位。 –

回答

0

你的问题就在这里:

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

这里发生的事情是,当wood(数字)大于或等于1000,你做一些数学上数字并返回一个字符串,然后取出该字符串并将其重新分配给您的变量,所以前进,这就是存储和使用的内容。你应该把这个replace变量的结果注入到DOM中,这样用户就可以看到格式化的输出,但内部值保持一个数字。

此外,您第一次运行代码时,将不会存储任何值,因此您需要准备初始化它。

最后,您需要将输出代码移动到按钮单击中。

请登录see this Fiddle以获得带评论的工作版本。

+0

你知道'localStorage'之前''做了什么吗? – lonesomeday

+0

@LiamSperry查看我更新的答案和小提琴。 –

+0

@lonesomeday我一开始并没有看到'+'。我已经更新了我的答案。 –

相关问题