[英]localStorage keeps adding '0'. (jScript & HTML5)
好吧,我的代码一直很好,我只是想做一个简单的游戏,直到我添加这个(因为我想学习如何将信息保存到用户本地存储):
if(localStorage.getItem('money'))
{
var Money = localStorage.getItem('money');
document.getElementById('test').innerHTML="EXISTS";
} else {
localStorage.setItem('money', 0);
var Money = localStorage.getItem('money');
document.getElementById('test').innerHTML="DOES NOT EXIST";
}
我的完整代码如下所示:
<head><meta charset="UTF-8"></head>
<body><span id='test'></span>
Generated something: <span id='money'>0$</span> (money per click: <span id='MPC'>1$</span>)
<br />
Upgrade 1 upgrades: <span id='u1Us'>0</span> (production rate: <span id='u1Pr'>0</span>)
<br />
<span id='updates'></span>
<br />
<button onClick='mButton()'>Generate something.</button>
<br /><br />
<b>Upgrades:</b>
<br /><br />Generator upgrades:<br />
<button onClick='buyU1()'>Buy upgrade 1. ($30)</button>
<br /><br />Self-generated upgrades:<br />
<button onClick='buySG1()'>Buy Self-Generated Upgrade 1 ($500)</button>
</body>
<script>
if(localStorage.getItem('money'))
{
var Money = localStorage.getItem('money');
document.getElementById('test').innerHTML="EXISTS";
} else {
localStorage.setItem('money', 0);
var Money = localStorage.getItem('money');
document.getElementById('test').innerHTML="DOES NOT EXIST";
}
var U1Amount = 0;
var cMoney = 1;
function mButton()
{
Money += cMoney;
document.getElementById('money').innerHTML=Money + "$";
}
function buyU1()
{
if(Money < 30)
{
document.getElementById('updates').innerHTML="You do not have enough money.";
resetUpdates();
} else {
Money -= 30;
U1Amount += 1;
document.getElementById('u1Us').innerHTML=U1Amount;
document.getElementById('money').innerHTML=Money + "$";
document.getElementById('updates').innerHTML="You have successfully bought Upgrade 1";
var calcU1Amount = U1Amount * 5;
document.getElementById('u1Pr').innerHTML=calcU1Amount;
resetUpdates();
}
}
var interval = setInterval(gMoneyU1, 1000);
function gMoneyU1()
{
var calc = 5 * U1Amount;
Money += calc;
document.getElementById('money').innerHTML=Money + "$";
}
function buySG1()
{
if(Money < 500)
{
document.getElementById('updates').innerHTML="You do not have enough money.";
resetUpdates();
} else {
Money -= 500;
cMoney += 1;
document.getElementById('MPC').innerHTML=cMoney + "$";
document.getElementById('money').innerHTML=Money;
}
}
function resetUpdates()
{
setTimeout(function(){document.getElementById('updates').innerHTML="";}, 10000);
}
</script>
我要将localStorage添加到我要保存的所有信息中,但是我遇到了第一个问题。 用我的save-the-persons-info输出我的代码是: http : //puu.sh/6iONl.png (并且它永远保持开启)
它由于某种原因不断添加'0',我无法弄清楚原因。 我真的很感激帮助。 提前致谢。
对不起,如果我的代码很乱,我还在学习,为什么要求帮助。
您设置为localStorage的唯一时间是调用localStorage.setItem('money', 0);
。
您可能希望将其更改为设置货币变量的实际值。
本地存储将所有内容存储为字符串,因此您需要在从本地存储中返回的任何内容上调用parseInt()
。 然后,您应该能够将两个int一起正确添加,而不是将两个字符串连接在一起。
localStorage中的值都是字符串。 当你这样做时:
localStorage.setItem('x', 0);
var x = localStorage.getItem('x'); // x === '0'
x = x + 1; // x = '01';
您在本地存储中设置的内容将是您转换为字符串的值。 当你从localStorage中检索它时,你应该parseInt(或者将它转换回一个数字)以避免这个问题。
你的if语句总是返回false,所以你永远不会得到if语句的“if true”部分。 这是因为如果未设置本地存储值将为null,或者如果设置则在大多数浏览器上为字符串值(“0”),或者如果设置则在某些浏览器上为整数。 (大多数浏览器只维护本地存储的字符串,尽管HTML5规范允许其他值。)
首先,您需要将if部分更改为以下内容:
if (localStorage.getItem('money') != null)
我不完全确定你在尝试逻辑方面做了什么,但如上所述,你的另一个问题是你只是将值设置为0然后立即读取值(这仍然是零。)这就是为什么你得到零。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.