无法读取未定义的属性'undefined'

时间:2013-01-09 15:47:26

标签: javascript cookies if-statement

使用Cookie会遇到更多麻烦,我确实让我的网站保存了Cookie(待办事项列表项)并在页面加载后重新加载它们并将它们放回到屏幕上的表格中。

但是,当我删除了所有的cookie并试图重新开始时,我一直收到一个控制台错误说Cannot read property 'undefined' of undefined现在,如果我注释掉下面两段代码,这个问题就会消失,但是cookie系统当然会失败。

此部分检查上次有人访问时待办事项列表中的项目数,并将i设置为该数字,因此不会删除任何内容。

var listCookies = document.cookie.split(";");

for(var a = 0; a < listCookies.length; a++) {

    var listCount = myCookies[i].trim().split("=");

    if(listCount[0].indexOf("listCount") === 0) {
        var i = listCount;
    } else {
        var i = 0;
    }
 }

此部分查找实际的待办事项,并将它们放在屏幕上的表格中。

var myCookies = document.cookie.split(";");

for(var b = 0; b < myCookies.length; b++) {

    var cookie = myCookies[i].trim().split("=");

    if(cookie[0].indexOf("todo-") === 0) {

        window.todoTable.insertAdjacentHTML('beforeend', decodeURIComponent(cookie[1]));
    }
}

我理解的问题是,首次访问某人时没有保存任何cookie,但是当我尝试添加一个似乎没有做任何事情的if (typeof document.cookie === "undefined")语句时。

我假设我需要一个包含这些代码的if语句吗?要说,如果没有cookie,'跳过这一点'。如果有,'做东西'。

1 个答案:

答案 0 :(得分:1)

i应该是全球性的,我已将其设为totalCount

第一部分应该是:

var totalCount = 0;

var listCookies = document.cookie.split(";");

for(var a = 0; a < listCookies.length; a++) {

    var listCount = listCookies[a].trim().split("=");

    if(listCount[0].indexOf("listCount") === 0) {
        totalCount = listCount[1];
        break;
    }
 }

第二部分应该是:

var myCookies = document.cookie.split(";");

for(var b = 0; b < myCookies.length; b++) {

    var cookie = myCookies[b].trim().split("=");

    if(cookie[0].indexOf("todo-") === 0) {

        window.todoTable.insertAdjacentHTML('beforeend', decodeURIComponent(cookie[1]));
    }
}