Javascript中的localStorage

时间:2018-07-19 00:56:22

标签: javascript local-storage

我正在尝试创建用于计算利润的JavaScript。我基本上有一个HTML按钮,每次按该按钮时都会在表中添加数字100,然后您会自动计算使用其他变量(例如价格和成本)所获得的利润。我现在要使它执行的操作是保存鲨鱼的数量(这是我在桌子上使用的资源),因此,如果刷新网站,该数量仍然存在。我使用过localStorage,但没有成功。这是我目前拥有的代码。

var shark = [localStorage.getItem('amountShark'), 993, 0, 993]




function addSharks()
{

    var sharkstoadd = 100;
    shark[0] += 100;
    shark[3] = shark[0] * (shark[1] - shark[2])
    document.getElementById("sharkAmount").innerHTML = shark[0];
    document.getElementById("sharkPrice").innerHTML = shark[1];
    document.getElementById("sharkCost").innerHTML = shark[2];
    document.getElementById("sharkProfit").innerHTML = shark[3];
    localStorage.setItem('amountShark', shark[0]);

}

我得到的问题是保存的数据是字符串而不是数字,所以如果我想将100添加到本地存储中,则不会这样添加100 + 100 = 100100,而不是这样100 + 100 = 200。不要在array / shark [0]中使用localStorage.getItem('amountShark'),以正确的方式添加数据。正如我之前所说,那是因为数据存储为字符串。我想知道是否有办法解决此问题,最终目标是在屏幕上显示一个数字,并且在刷新站点时该数字仍然存在,因此我还需要能够通过按一个按钮来添加100在网站上,刷新时也需要保存。

编辑:

通过执行此操作并添加parseInt来解决此问题

var shark = [parseInt(localStorage.amountShark, 10), 993, 0, 993]




function addSharks()
{

    var sharkstoadd = 100;
    shark[0] += 100;
    shark[3] = shark[0] * (shark[1] - shark[2])
    document.getElementById("sharkAmount").innerHTML = shark[0];
    document.getElementById("sharkPrice").innerHTML = shark[1];
    document.getElementById("sharkCost").innerHTML = shark[2];
    document.getElementById("sharkProfit").innerHTML = shark[3];
    localStorage.setItem('amountShark', shark[0]);

}

现在唯一的事情是更新浏览器时,该数字直到我再添加一百后才会显示。

编辑2:

弄清楚如何在输入第一个编辑内容时解决该问题,不知道这是否是编写它的最佳方法,但它可以成功,所以很成功:)

var shark = [parseInt(localStorage.amountShark, 10), 993, 0, 993]


document.getElementById("sharkAmount").innerHTML = shark[0];
shark[3] = shark[0] * (shark[1] - shark[2])
document.getElementById("sharkProfit").innerHTML = shark[3];

function addSharks()
{

    var sharkstoadd = 100;
    shark[0] += 100;
    shark[3] = shark[0] * (shark[1] - shark[2])
    document.getElementById("sharkAmount").innerHTML = shark[0];
    document.getElementById("sharkPrice").innerHTML = shark[1];
    document.getElementById("sharkCost").innerHTML = shark[2];
    document.getElementById("sharkProfit").innerHTML = shark[3];
    localStorage.setItem('amountShark', shark[0]);

}

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

使用parseInt()将字符串转换为数字。目前,您要附加字符串。

当前为:

function addSharks()
{

    var sharkstoadd = 100;
    shark[0] += 100;
    shark[3] = shark[0] * (shark[1] - shark[2])
    document.getElementById("sharkAmount").innerHTML = shark[0];
    document.getElementById("sharkPrice").innerHTML = shark[1];
    document.getElementById("sharkCost").innerHTML = shark[2];
    document.getElementById("sharkProfit").innerHTML = shark[3];
    localStorage.setItem('amountShark', shark[0]);

}

更改为:

function addSharks()
    {

        var sharkstoadd = 100;
        shark[0] = parseInt(shark[0]) + 100;
        shark[3] = parseInt(shark[0]) * parseInt((shark[1]) - parseInt(shark[2]))
        document.getElementById("sharkAmount").innerHTML = shark[0];
        document.getElementById("sharkPrice").innerHTML = shark[1];
        document.getElementById("sharkCost").innerHTML = shark[2];
        document.getElementById("sharkProfit").innerHTML = shark[3];
        localStorage.setItem('amountShark', shark[0]);

    }