gpt4 book ai didi

javascript - 带有 cookie 的错误

转载 作者:行者123 更新时间:2023-11-30 19:39:36 27 4
gpt4 key购买 nike

我目前正在用 Javacript 制作一个 Flappybird 游戏,现在我正在实现一个 cookie 来存储高分。但问题来了,cookie 总是未定义的,不会改变。

为免有人混淆,我应该说我使用框架 p5.js,它可以帮助我绘制东西。代码在我的 gitHub 存储库 ( https://github.com/HaasStefan/challengeRepo/tree/master/FlappyBird ) 上。主要代码在名为 sketch.js 的文件中,但这里有一些片段:

首先,这是我初始化所有内容的地方,还有 cookie:

function setup() {
createCanvas(400, 600);
bird = new Bird();
menu = new Menu();
pipes.push(new Pipe());

alert(navigator.cookieEnabled);

if (typeof (document.cookie == "undefined"))
document.cookie = "highscore=0; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}

接下来是读取和更改 cookie 的部分:

let str = document.cookie.split(';');
highscore = str[0].split('=')[1];
if (score > highscore) {
highscore = score;
document.cookie = "highscore=" + highscore + "; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}

我真的希望你能帮我解决这个问题,因为我不知道这个错误是什么。谢谢!

最佳答案

正如评论中已经提到的,第一个问题是if条件

if (typeof (document.cookie == "undefined"))

必须写成

if (typeof document.cookie != "undefined")

下一个问题是从“highscore”cookie 中读取值。假设还有其他几个cookie,读取其值的方式应该是:

var highscore = ('; '+document.cookie).split('; highscore=').pop().split(";").shift();

上面一行的结果是字符串类型,所以你需要在进行任何比较之前将它转换为 int。

highscore = parseInt(highscore)

总结一下:

if (typeof document.cookie != "undefined") {
document.cookie = "highscore=0; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}

然后

let str = ('; '+document.cookie).split('; highscore=').pop().split(";").shift();
highscore = str ? parseInt(str) : 0;
if (score > highscore) {
highscore = score;
document.cookie = "highscore=" + highscore + "; expires=Sun, 1 Dec 2030 12:00:00 UTC; path=/";
}

关于javascript - 带有 cookie 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55549780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com