尝试本地数据存储时出现类型错误,如何初始化我的网站?

Type error while trying local data storage, how to initiaise my Website?

我对 Web 开发比较陌生,现在正在部署我的第一个 Web 应用程序(待办事项列表),您可以看看它 https://peaceful-stream-48694.herokuapp.com/

现在我想添加 HTML 本地存储来保存待办事项,并且在初始化时抛出类型错误(无法读取 属性 of nullof my To-Do's error)网站。 我知道我要么必须在存储中没有项目时将数组设置为零,要么将它们加载到数组中以防万一(已经有效),但是我不知道该怎么做没有存储空间。

我想这是一个范围问题,但我只是不知道如何解决它。下面是一段存储和加载数据的代码:

function saveList() {
      let str = JSON.stringify(toDoList);
      localStorage.setItem("todoList", str );
    }


    function loadList() {
      if (toDoList == null) {
          toDoList = [];
      } else {
          let str = localStorage.getItem("todoList")
          toDoList = JSON.parse(str);
          displayList()
      }
    }

    function displayList() {
    if (toDoList != null) {
     for(i=0; i < toDoList.length; i++) {
        htmlInsert ='<div id="' + toDoList[i].id + '" class="newItem"> <input type="checkbox"> <p>' + toDoList[i].toDo +'</p> <button type="button" class="deleteButton">DELETE</button></div>';
        list = document.getElementById("itemsList");
        list.insertAdjacentHTML("beforeend", htmlInsert);
        SetupEventListener();
          }
        }
      }


    loadList()

开头全局定义了To-Do数组: let toDoList = [];

感谢您的帮助。 非常感谢,抱歉,如果这很乱,不知道如何使它更清晰。

干杯

你初始化 let toDoList = [],然后你做的第一件事(在 loadList() 中)是测试 if (toDoList == null)。永远不会满足这个条件。

我认为您的 loadList 函数应该如下所示:

function loadList() {
     let str = localStorage.getItem("todoList"); // can be null
     toDoList = str ? JSON.parse(str) : [];
     displayList();
}

然后在displayList()中你可以删除if (toDoList != null)因为这个条件总是会被满足(todoList永远不会为null因为它总是被初始化为一个数组)