到目前为止,这是我目前的Cookie功能:
function getCookie(name, type) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
x = c.substring(nameEQ.length,c.length);
if (type=="Bool") {
if (c.indexOf(name) == 0) return x;
} else {
if (c.indexOf(name) == 0) return parseInt(x);
}
}
return 0;
}
但是,布尔值不能正确返回。但是,整数值可以。如果有人可以提供帮助,那就太棒了,我一直在寻找30分钟,但仍然没有找到答案。
答案 0 :(得分:1)
在条件中,看起来只是return x
(一个字符串),而不是先将其转换为布尔值。我建议:
if (type=="Bool") {
if (c.indexOf(name) == 0) return (x == "true");
} else {
...
}
你可以改变这个实现 - 我刚刚选择考虑"true"
布尔值为true的唯一有效字符串;所有其他都被视为假(无论它们是否实际匹配字符串"false"
)。
答案 1 :(得分:1)
我更喜欢这样做,但肯定有其他正确的答案。我觉得它更具可读性,但有些人会表示不同意。
for(...){
... other ...
var isMatch = !!~c.indexOf(name);
if (!isMatch) return;
return (type=="Bool") ? x == 'true' : parseInt(x);
}