我使用HTML,CSS,JS,AJAX和PHP做了一些游戏。
但是,为了保存用户的最佳分数,我使用了localStorage(第一次)。
出于某种原因,即使最佳分数显示在"最佳分数"用户框 仍在播放(正如我想的那样),当你刷新页面时它被移除,并再次变为0(这 我定义为默认值。)
有人可以为我指出问题吗?
以下是代码的具体部分:
$(".pi_tab .best_result #score").html(localStorage.record);
$("#pi_input").keyup(function() { // On pressing a digit
var num = parseInt($("#counter").html()); // Convert counter's value to integer
if (!isNaN(num)) // If it's a legal number
{
if (num + 1 > localStorage.record) // If it's the score is a new record
{
localStorage.record = num + 1; // Update record
$(".pi_tab .best_result #score").html(localStorage.record); // Show record as "Best Score"
}
}
});
答案 0 :(得分:2)
尝试使用w3schools中的代码模式:http://www.w3schools.com/html/html5_webstorage.asp
使用setItem
和getItem
来设置/获取数据,在我看来,您的代码正在localStorage对象上创建另一个名为record的属性,该属性更可能与其他javascript变量相同
答案 1 :(得分:1)
尝试使用属性setItem
:
localStorage.setItem("key", "value");
注意:名称/值对始终存储为字符串。请记住在需要时将它们转换为其他格式!
来源:W3Schools
执行:
if (num + 1 > localStorage.getItem("record")) // If it's the score is a new record
{
localStorage.setItem("record",num + 1);
...
}
也许这是你的问题。
替换为:
var record = num + 1;
var localRecord = localStorage.getItem("record");
if (record > parseInt(localRecord)) // If it's the score is a new record
{
localStorage.setItem("record", record);
...
}