Javascript 无法读取属性';未定义';未定义的

Javascript 无法读取属性';未定义';未定义的,javascript,cookies,if-statement,Javascript,Cookies,If Statement,在cookie方面有点麻烦,我确实让我的站点保存cookie(待办事项列表项),并在页面加载后重新加载它们,然后将它们放回屏幕上的表中 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

在cookie方面有点麻烦,我确实让我的站点保存cookie(待办事项列表项),并在页面加载后重新加载它们,然后将它们放回屏幕上的表中

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并尝试重新开始时,我不断收到一个控制台错误,说
现在无法读取undefined的属性“undefined”
,如果我注释掉下面两段代码,这个问题就会消失,但cookie系统当然会失败

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

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 listCookies=document.cookie.split(“;”);
对于(var a=0;a
本节查找实际的待办事项,并将其放在屏幕上的表格中

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]));
    }
}
var mycokies=document.cookie.split(“;”);
for(var b=0;b
我知道问题是,有些人第一次访问时没有保存任何cookie,但当我尝试添加一个似乎没有任何作用的
if(typeof document.cookie==“undefined”)
语句时


我假设我需要一个if语句来包装这些代码,对吗?也就是说,如果没有饼干,“跳过这一点”。如果有“do stuff.”

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]));
    }
}
var totalCount=0;
var listCookies=document.cookie.split(“;”);
对于(var a=0;a
第二节应为:

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]));
    }
}
var mycokies=document.cookie.split(“;”);
for(var b=0;b
在第一部分中,您似乎在设置i和mycokies变量之前就引用了它们。是这样吗?var listCount=myCookies[i].trim().split(“=”);您可以检查导致错误的行吗?如果(typeof(document.cookie)==“undefined”)
myookies
没有定义,并且
i
还没有定义,那么应该是
myookies[i]
请求
undefined
上的
undefined
。为什么需要第一部分?你所说的“没有任何东西被删除”是什么意思?你的代码可能没有错误,但它是否如你所期望的那样工作?是的!非常感谢:)我唯一需要知道的是如何记住复选框是否被选中。lol。你可以保留一个二进制字符串,每个复选框的每一位。