您好,在我的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功能正常工作。感谢
答案 0 :(得分:1)
在document.cookie.split(“;”)
中需要有空格即
document.cookie.split("; ")
答案 1 :(得分:1)
只需在末尾添加trim()
即可删除尾随空格。它适用于侧面,头部和尾部。
cookie = cookieArray[i].split('=')[0].trim();
答案 2 :(得分:0)
您可以使您的函数返回从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);