在greetUser函数中找到逻辑错误

时间:2011-10-16 23:59:15

标签: javascript

我的教授说我在已经评分的代码的greetUser函数中有一个逻辑错误。代码基于文本中的示例,因此我对确定逻辑感到震惊。这是她给我的信息:

  

greetUser函数没有正确地为返回的访问者读取cookie。    检查readCookie函数中的这行代码 - 它有一个逻辑错误。

这是readCookie函数:

function readCookie(name) {
    var nameEQ = name + "=";
    var x = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = cookies[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

这是greetUser函数:

function greetUser(){
    userName = readCookie("rock_username");
    if(userName)
        alert("Hello " + userName + ", I missed you.");
    else 
        alert("Hello, I am your pet rock");
}

从我的新手眼中看,这对我来说都是合乎逻辑的,就像在文本示例中一样。 任何建议

1 个答案:

答案 0 :(得分:2)

var x = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = cookies[i];

您正在迭代“ca”(这是什么?)而不是“x”,然后您正在阅读cookies数组? 3个不同的变量,意义相同?

我将解释:var x = document.cookie.split(';');将存储在document.cookie中的字符串拆分为一个数组,该数组将有效地保存在x参数中。

然后,在for()构造内部,您正在增加i,直到在您刚刚分割字符串时创建的数组中找到的元素数量。这样,每次你c = x[i]; (正确版本)您将获得用{;'分割的document.cookie字符串的下一部分字符。

这允许您处理document.cookie的所有有趣部分,根据定义,它们是用户代理(浏览器)cookie。在您的示例中,您正在迭代cookie以查找特定的cookie - “名称”cookie,以便将其打印为用户的问候语。

祝你好运!