【发布时间】:2020-06-03 18:45:09
【问题描述】:
我正在制作一个小型“笔记本”应用程序,它将创建、存储、编辑、删除多页文本数据。
我需要创建一个系统来检测您是否在列表的末尾,并创建一个新页面,然后在编辑器中更新文本。
我开始收到错误“无法读取未定义的属性“名称””,但它是“currentData”内明确定义的变量
我设法剪掉了大部分代码,这似乎是导致问题的原因:
let currentData,
currentPage = 0;
if (window.localStorage.getItem("nbEditorData")) {
currentData = JSON.parse(window.localStorage.getItem("nbEditorData"));
} else {
currentData = [
{
name: "Page 1 Title", data: "Welcome"
}
];
}
function visualizeData() {
console.log(currentData);
document.querySelector(".name").value = currentData[currentPage].name; // Error Occurs Here <-
document.querySelector(".page").innerText = currentData[currentPage].data;
}
document.querySelector(".forward").addEventListener("click", e => {
if (currentPage != currentPage.length) {
currentPage++;
visualizeData();
} else {
currentData.push({name: "New Page", data: ""});
currentPage++;
visualizeData();
}
if (currentPage + 1 == currentPage.length) {
e.target.innerHTML = "????";
}
});
【问题讨论】:
-
currentData[currentPage]在代码运行时是undefined。你可能被this "feature" ofconsoleon browsers欺骗了。 -
@T.J.Crowder 我在查看时没有展开它。我在修改之前记录数组,并且在修改之前发出错误。另外,如果这是控制台中的视觉错误,它应该仍然能够在笔记本上创建一个新页面并将“新页面”放在其标题上。
-
@MisterSirCode 所以也要记录
currentPage的值。您可能会发现它设置为1(位于数组末尾) -
@Alnitak 但是...这正是我正在做的...我在该确切功能中的错误之前记录“currentData”
-
他说的是
currentPage,而不是currentData。如果在该行设置断点,您会发现currentData[currentPage]是undefined。 JavaScript 引擎对此并没有错。 :-)
标签: javascript object