使用cookie(javascript)时,for循环中的If/Elseif语句出现问题



嗨,在我的javascript游戏中,当游戏启动时,我使用cookie加载一些数据

function loadData(){
cookieArray = document.cookie.split(';');
for (var i = 0; i < cookieArray.length; i++){
    cookie = cookieArray[i].split('=')[0];
    value = cookieArray[i].split('=')[1];

    if (cookie=="currentR"){
        round = value;
    }
    else if(cookie=="blueWins"){
        bWins=value
    }
    else if(cookie == "redWins"){
        rWins=value
    }
   }
}

当调用此函数时,for循环工作正常,但if语句什么都不做?我试着在cookie=cookieArray行后面放一个console.log(cookie)来测试找到了哪些cookie,它们都包括;currentR、blueWins和redWins。但我试着在每个if语句中放入一个console.log,但它没有记录任何内容,因为if语句永远不会变为true。为什么会这样,因为cookie在for循环的某个阶段等于currentR(和另一个2)。控制台没有记录任何错误,所以我不知道。如果它有帮助,我将包括保存数据然后重新加载页面的功能

function saveData(){
clearInterval(reloadG)
document.cookie = 'currentR=' + round
window.alert("Saved Data")
document.cookie = 'blueWins='   + bWins
document.cookie = 'redWins=' + rWins
location.reload(true)
}

我已经做了一些测试,我确信saveData函数运行良好。感谢

需要在document.cookie.split(";")中有空白

document.cookie.split("; ")

只需在末尾添加trim()即可删除尾部空格。它适用于两侧,头部和尾部。

cookie = cookieArray[i].split('=')[0].trim();

  1. 试着修剪你的元素,而不是猜测它后面是否有空白;是否
  2. 试着让你的功能模块化

您可以使Your函数返回从cookie中读取所有数据的对象。

检查此项:

function loadData(){
  var data = {}; 
  var elements = document.cookie.split(';');
  for (var i = 0; i < elements.length; i++){
    var cookie = elements[i];
        cookie = cookie.replace(/^s+|s+$/gm,''); // trimming whitespaces
        cookie = cookie.split('=');
        data[cookie[0]] = cookie[1];
  }
  return data;
}
var data = loadData();
alert(data.currentR, data.blueWins, data.redWins);

最新更新