错误来"Uncaught TypeError: notesObj.push is not a function at HTMLButtonElement.<anonymous>"。请任何人


let addBtn = document.getElementById("addBtn");
addBtn.addEventListener("click", function(e) {
let addTxt = document.getElementById("addTxt");
let notes = localStorage.getItem("notes");
if (notes == null) {
notesObj = [];
}
else {
notesObj = JSON.parse(notes);
}
notesObj.push(addTxt.value);
localStorage.setItem("notes", JSON.stringify(notesObj));
addTxt.value = "";

});

不仅";"推";它也不采用任何其他Array函数。P.S:我用了bootstrap来做造型。

错误

notesObj.push不是函数

意味着notesObj没有名为push的函数,在这种情况下,这是因为notesObj是数组。让我们回溯代码,看看notesObj为什么不是数组。

let notes = localStorage.getItem("notes");
notesObj = JSON.parse(notes)

基于这两行代码,notesObj是localStorage项解析为JSON后的返回值。根据localStorage.getItem((的官方文档,如果没有设置项(第一次执行代码时就是这样(,则此表达式的返回值将为null,这可能会导致此类错误。

解决方案:您可以通过在localStorage中设置指定项的初始值来解决此问题,或者最好在使用前验证其类型。

示例

let btn = document.getElementById("addBtn");
addBtn.addEventListener("click", function(e) {
let addTxt = document.getElementById("addTxt");
let notes = localStorage.getItem("notes");
notesObj = JSON.parse(notes);
if(notesObj === null) notesObj= []; // This sets it to an empty array initially
notesObj.push(addTxt.value);
localStorage.setItem("notes", JSON.stringify(notesObj));
addTxt.value = "";
});

相关内容

最新更新