所以最近我在JS中遇到了localStorage的问题。每次我按下按钮而不是向var wood;
加1时,每次按下按钮,输出都会在输出的左侧加1,因此如果我按按钮3次而不是wood = 3
将等于111
。请帮忙。
<!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){
replace = (wood / 1000).toFixed(2) + "k";
wood = replace;
document.getElementById('output').innerHTML = wood;
}
function collectWood() {
wood = wood + 1;
document.getElementById('output').innerHTML = wood;
}
</script>
</body>
</html>
最佳答案
您的问题就在这里:
replace = (wood / 1000).toFixed(2) + "k";
wood = replace;
这里发生的是,当
wood
(一个数字)大于或等于1000时,您需要对数字进行一些数学运算,然后返回一个字符串,然后将该字符串重新分配给您的wood
变量,因此向前,这就是存储和使用的内容。您应该只获取该replace
变量的结果并将其注入到DOM中,以便用户看到格式化的输出,但是内部值保留为数字。另外,第一次运行代码时,将不会存储任何值,因此您需要准备对其进行初始化。
最后,您需要将输出代码移至单击按钮的位置。
请see this Fiddle带有注释的工作版本。