获取/设置localstorage的数值

时间:2016-11-03 19:36:16

标签: javascript jquery html storage local

我正在尝试使用本地存储来存储数字,以便即使我刷新或重新访问该页面也会保留,但每当我刷新返回值为0时。

我知道这可能是一个非常简单的解决方案,我无法弄清楚,但我非常感谢这个初学者(可能)简单问题的答案。

如果您想知道这是星级评分系统。

HTML:

var api= "http://api.openweathermap.org/data/2.5/weather?lat="+lat+"&lon="+long+"&appid=c873adc18574701f4fb0abe01d927819";

jQuery的:

<p id="r1"></p>

4 个答案:

答案 0 :(得分:4)

第一个问题是,当您使用database.yml检索本地存储项时,您没有提供本地存储项的名称,该项应该是getItem

第二个问题是,您在加载页面时调用了localStorage.getItem("x1"),而不是在用户点击评级时,因此它没有使用用户选择的评级。< / p>

setItem()

答案 1 :(得分:2)

目前,您正在请求密钥undefined的本地存储值,因为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);是正确的,但在错误的位置,它需要位于点击事件块内。

答案 2 :(得分:1)

这是因为x1未定义。所以你基本上做的是localStorage.getItem(undefined)。这返回null,因为你有一个加号,它将null转换为0。

 +null == 0; // true

答案 3 :(得分:0)

看来你可能对localStorage方法的工作方式感到有些困惑。基本上你需要两件事:一个键和一个你希望分配给它的值。我将简要介绍一下它是如何工作的。

const key = 'taco';
let value = 'sauce';

localStorage  // {se:fkey: "c6d8756477bc8eb22494f28a5bbc3afc,1464967104", length: 1}

// Now let's say I want to save this to local storage. This is how.
localStorage.setItem(key, value);

localStorage // {se:fkey: "c6d8756477bc8eb22494f28a5bbc3afc,1464967104", taco: "sauce", length: 2}  . As you can see it is now in localStorage.

// Now let's say we want to retrieve what we set from localStorage.
localStorage.getItem(key); // 'sauce'

希望有所帮助。