你如何从cookie中读取布尔值?

时间:2014-12-28 00:29:39

标签: javascript cookies

到目前为止,这是我目前的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分钟,但仍然没有找到答案。

2 个答案:

答案 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);
}