Javascript 获取/设置localstorage的数字值

Javascript 获取/设置localstorage的数字值,javascript,jquery,html,storage,local,Javascript,Jquery,Html,Storage,Local,我试图使用本地存储来存储一个数字,这样即使我刷新或重新访问页面,它也会保持不变,但每当我刷新时,返回值都是0 我知道这可能是一个非常简单的解决办法,我不知道,但我非常希望能回答这个初学者(可能)简单的问题 如果你想知道这是一个明星评级系统 HTML: 这是因为x1未定义。因此,您实际上要做的是localStorage.getItem(未定义)。这将返回null,并且由于您有一个加号,它将null转换为0 +null == 0; // true 您可能对localStorage方法的工作原理有

我试图使用本地存储来存储一个数字,这样即使我刷新或重新访问页面,它也会保持不变,但每当我刷新时,返回值都是0

我知道这可能是一个非常简单的解决办法,我不知道,但我非常希望能回答这个初学者(可能)简单的问题

如果你想知道这是一个明星评级系统

HTML:


这是因为x1未定义。因此,您实际上要做的是localStorage.getItem(未定义)。这将返回null,并且由于您有一个加号,它将null转换为0

 +null == 0; // true

您可能对localStorage方法的工作原理有点困惑。基本上,您需要两样东西:一个键和一个您希望分配给它的值。我将给你一个简单的例子,说明它是如何工作的

const key='taco';
让值='沙司';
localStorage/{se:fkey:“c6d8756477bc8eb22494f28a5bbc3afc,1464967104”,长度:1}
//现在让我们假设我想将其保存到本地存储。这就是为什么。
setItem(键、值);
localStorage/{se:fkey:“c6d8756477bc8eb22494f28a5bbc3afc,1464967104”,塔可:“酱汁”,长度:2}。正如您所看到的,它现在位于localStorage中。
//现在让我们假设我们想要从localStorage检索我们设置的内容。

localStorage.getItem(键);/'第一个问题是,当您使用
getItem
检索本地存储项时,您没有提供它的名称,这应该是
localStorage.getItem(“x1”)

第二个问题是,在加载页面时调用的是
setItem()
,而不是在用户单击评级时,因此它没有使用用户选择的评级

$(document).ready(function(){
    var x1;
    x1 = +localStorage.getItem("x1");
    $("#r1").html("Your rating: " + x1);

    $("#rating1 span").click(function() {
        var x1 = 5 - $(this).index();
        $("#r1").html("Your rating: " + x1);
        localStorage.setItem("x1", x1);
    });
});

当前您正在请求键
未定义
的本地存储值,因为
x1
没有值。如果将
x1
更改为字符串,则将获得键
“x1”
的值(如果存在)

因此,您的代码将变成:

$(document).ready(function(){

    var x1 = localStorage.getItem("x1");

    $("#r1").html("Your rating: " + x1);

    $("#rating1 span").click(function() {
        x1 = 5 - $(this).index();
        $("#r1").html("Your rating: " + x1);
        localStorage.setItem("x1", x1);
    });


});

您的
localStorage.setItem(“x1”,x1)
是正确的,但是在错误的位置,它需要在click事件块中。

只是为了清楚
localStorage。getItem(x1)
localStorage相同。getItem(未定义)
因为变量
x1
是声明的,但没有值,它是未定义的,您将该变量传递给
getItem
。您可能希望将其作为字符串引用,
+localStorage.getItem(“x1”)即使我更改了var x1;对var-x1=0;我也一样result@random1234您需要为localStorage项指定一个名称。它应该是
localStorage.getItem(“x1”)
抱歉,我很困惑,它仍然无法工作@BarmarWell您和Barmar的回答都有效,因此非常感谢您的帮助!!谢谢你!
$(document).ready(function(){
    var x1;
    x1 = +localStorage.getItem("x1");
    $("#r1").html("Your rating: " + x1);

    $("#rating1 span").click(function() {
        var x1 = 5 - $(this).index();
        $("#r1").html("Your rating: " + x1);
        localStorage.setItem("x1", x1);
    });
});
$(document).ready(function(){

    var x1 = localStorage.getItem("x1");

    $("#r1").html("Your rating: " + x1);

    $("#rating1 span").click(function() {
        x1 = 5 - $(this).index();
        $("#r1").html("Your rating: " + x1);
        localStorage.setItem("x1", x1);
    });


});