我正在尝试使用本地存储来存储数字,以便即使我刷新或重新访问该页面也会保留,但每当我刷新返回值为0时。
我知道这可能是一个非常简单的解决方案,我无法弄清楚,但我非常感谢这个初学者(可能)简单问题的答案。
如果您想知道这是星级评分系统。
HTML:
var api= "http://api.openweathermap.org/data/2.5/weather?lat="+lat+"&lon="+long+"&appid=c873adc18574701f4fb0abe01d927819";
jQuery的:
<p id="r1"></p>
答案 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'
希望有所帮助。