带有Cookie的错误

时间:2019-04-06 13:57:12

标签: javascript cookies p5.js

我目前正在用Javacript开发Flappybird游戏,现在我正在实现一个cookie以存储高分。但这是问题所在,cookie始终是未定义的并且不会更改。

为了让每个人都感到困惑,我应该说我使用Framework 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=/";
}

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

1 个答案:

答案 0 :(得分:1)

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

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

必须写为

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

下一个问题是从“高分” 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=/";
}