0
document.cookie = "happy=random stuff";
function readCookie(name) {
    var cookie,cname,i;
    cookie = document.cookie.split(";");
    cname = name;
    for (i=0; i<=cookie.length; i++) {
        var c = cookie[i];
        if (c.indexOf(cname) == 0) {
            alert(c.substring(cname.length,c.length));
            return c.substring(cname.length,c.length);
        }
    }
    return null;
}

readCookie("happy");

http://jsfiddle.net/a2R3j/ 看来这一行是错误的:

if (c.indexOf(cname) == 0) {

它完美地工作。但是 jsfiddle 说有一个错误。真的有什么不对吗?

为清楚起见编辑:我希望它通过调用函数 getCookie(name here) 来返回 cookie 的内容,为清楚起见进行另一个编辑:Yusaf 代码:东西

带有 indexOf 的代码:东西

4

2 回答 2

0

http://jsfiddle.net/6qLZe/

使用.split("=")[1]而不是您的子字符串方法

document.cookie = "joker=batman";

function readCookie(cname) {
    var cookie_split = document.cookie.split(";");
    for (i = 0; i < cookie_split.length; i++) {
        var cookie_var = cookie_split[i].split("=")[0];
        if (cookie_var == cname) {
            return cookie_split[i].split("=")[1];
        }
    }
    return null
}

alert(readCookie("joker"));
于 2013-01-19T22:00:34.957 回答
0

您在 document.cookie 中有一个 cookie - 因此长度为 1,并且该 cookie 位于位置 0(js 从零开始)。

您的for循环高达i <= cookie.length,因此它迭代两次-首先是 for cookie[0],然后是 for cookie[1],因为cookie[1]不存在而失败。

for将循环更改为for (i = 0; i < cookie.length; i++) {

于 2013-01-19T22:01:53.600 回答