使用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,'跳过这一点'。如果有,'做东西'。
答案 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]));
}
}