繁体   English   中英

localStorage不断添加'0'。 (jScript和HTML5)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM