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

时间:2016-04-03 01:04:47

标签: javascript if-statement for-loop cookies

您好,在我的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,包括所有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功能正常工作。感谢

3 个答案:

答案 0 :(得分:1)

在document.cookie.split(“;”)

中需要有空格

document.cookie.split("; ")

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

  1. 尝试修剪你的元素而不是猜测它后面是否有空格; <或li>
  2. 尝试使您的功能模块化。
  3. 您可以使您的函数返回从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);