Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何存储持久数据?_Javascript - Fatal编程技术网

Javascript 如何存储持久数据?

Javascript 如何存储持久数据?,javascript,Javascript,我正在制作一款以cookies(NOM NOM cookies,而不是网络浏览器cookies)为货币的游戏 var cookies = 0; function cookieClick(number){ cookies = cookies + number; document.getElementById("cookies").innerHTML = cookies; } 现在我需要保存cookies的数量,这样当用户刷新页面时,cookies的数量将保持不变 我该怎么做呢?看

我正在制作一款以cookies(NOM NOM cookies,而不是网络浏览器cookies)为货币的游戏

var cookies = 0;
function cookieClick(number){
    cookies = cookies + number;
    document.getElementById("cookies").innerHTML = cookies;
}
现在我需要保存cookies的数量,这样当用户刷新页面时,cookies的数量将保持不变


我该怎么做呢?

看来你的意思并不是我们这里所说的饼干。显然,您只需要存储一个名为
cookies
的计数器

您可以按照建议使用
window.localStorage

function consumeCookies (n) {
    var n = n ? n : 1;
    var util = localStorage.getItem("util");
    util = util ? util : "{}";
    util = JSON.parse(util);
    util.cookies = util.cookies ? util.cookies + n : n;
    util = JSON.stringify(util);
    return localStorage.setItem("util", util);
}
// For consuming 42 cookies ...
consumeCookies(42);
请注意,这里存储的是一整袋属性,而不仅仅是一个普通的
(键、值)
。这可能是一个更好的设计选择,但这取决于你的品味

在同一名称空间中,您现在可以存储其他属性,例如播放器的名称:

function loadUtil () {
    var util = localStorage.getItem("util");
    util = util ? util : "{}";
    util = JSON.parse(util);
    return util;
}

function storeUtil (util) {
    return localStorage.setItem("util", JSON.stringify(util));
}

function setName (name) {
    var util = loadUtil();
    util.name = name ? name : "Ulysses";
    return storeUtil(util);
}
并在应用程序的其他部分轻松访问整个JSON

退房

虽然这可能有点过分,而且在这种情况下,另一个更好的选择可能是选择

存储 Web存储API的存储接口提供对特定域的会话存储或本地存储的访问,允许您添加、修改或删除存储的数据项

如果要操作域的会话存储,请调用Window.sessionStorage方法;如果要操作域的本地存储,请调用Window.localStorage

cookies
的值存储在
窗口中。localStorage
使其保留直到用户清除缓存,或
窗口。sessionStorage
使其保留直到用户关闭浏览器窗口。然后更新页面加载上的值(如果存在)

()


你似乎对什么是饼干有一个基本的误解。在这里提问之前,您可能需要阅读一些教程。另外,请查看您的本地存储模型…无论您选择哪种方式,请注意,浏览器只能访问其自己的存储机制,您可能无法使用您的用户的文件系统。我正在制作空闲游戏,其中我使用Cookie作为货币,我试图找到一个功能来保存我的cookies,这样当我离开页面并返回时,我仍然可以拥有我离开时的cookies数量。是的,本地存储,但不知道它是如何工作的。我在某个网页上找到了它,但我没有理解它。@LasseHaslund LocalStorage基本上是窗口上的一个属性,它会持续存在,并且不会在用户每次导航时被清除(请参阅此处的文档:)
var cookies = 0;
if(localStorage.cookies) cookies = localStorage.getItem('cookies');
document.getElementById("cookies").innerHTML = cookies;
function cookieClick(number){
    cookies = parseInt(cookies) + number;
    document.getElementById("cookies").innerHTML = cookies;
    localStorage.setItem('cookies', cookies);
}