0

在使用 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,则“跳过这一点”。如果有,“做事”。

4

1 回答 1

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]));
    }
}
于 2013-01-09T16:06:15.003 回答