今天在做项目的时候需要通过获取cookie值来判断登录者的身份,感觉这个挺简单的,于是立马就写好了。但是在测试的时候,却出现了个小问题(菜鸟一个,当时没有立马想到为什么会出现这样的问题)。
代码如下:
this.getRole = function(){
var cookieArr = document.cookie.split(';');
for(i=0;i<cookieArr.length;i++)
{
var cookieNameValue=cookieArr[i].split('=');
if(cookieNameValue[0]=='role'){ //获取键名为‘role’的键值
if(cookieNameValue[1]=='student'){
return 'Stu';
}
if(cookieNameValue[1]=='company'){
return 'Enter';
}
if(cookieNameValue[1]=='teacher'){
return 'Tea';
}
}
}
};
浏览器中是有键名为role的cookie的, 但是却没有结果返回。
然后我把所有cookie中键名都打印了出来,有‘role’。我尝试这样去检测 alert(cookieNameValue[0]=='role');结果一直弹出的都是false。。这就纳闷了,相同的字符串比较,却得到false。
想了一会,就试想会不会切割得到的键名左右存在这空格呢?于是就把利用正则把获取到的键名的左右的空格去掉,添加下面一行代码后,问题解决了。
cookieNameValue[0] = cookieNameValue[0].replace(/(^\s*)|(\s*$)/g,"");
本文仅作为笔记记录。