JavaScript:需要帮助订购我的 JS“未捕获的类型错误:无法读取 null 的属性‘值’”

cha*_*eyz 1 html javascript dom typeerror

我是一个业余 JS 人,所以请善待你的投票,因为我对此很陌生。

我收到未捕获的类型错误:

无法读取 null 的属性“值”。

我意识到问题出在我的 js 的顺序和它调用 DOM 的顺序上,但我不确定到底在哪里。

有人介意帮我指出正确的方向吗?

这是我的代码:

<title></title>
</head>
<body>
  <form>
    <input id="todoItem" type="text" placeholder="Todo Item" />
    <input type="button" value="Save" onclick="insert();" />
  </form>
  <div id="display"></div>
<script type="text/javascript" src="main-2.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

main-2.js:

var todos  = [];

var todoInput  = document.getElementById("todoItem");

var messageBox  = document.getElementById("display");

function insert() {
 todos.push(todoInput.value);

 clearAndShow();
}

function clearAndShow() {

  todoInput.value = "";

  messageBox.innerHTML = "";

  messageBox.innerHTML += "Titles: " + todos.join(", ") + "<br/>";
}
Run Code Online (Sandbox Code Playgroud)

小智 5

把这一行:

var todoInput  = document.getElementById("todoItem");
Run Code Online (Sandbox Code Playgroud)

进入函数insert

当 var todoInput 初始化时,该元素不存在。

function insert() {
  var todoInput  = document.getElementById("todoItem");
  todos.push(todoInput.value);

  clearAndShow();
}
Run Code Online (Sandbox Code Playgroud)

要清除输入,请编写此代码

document.getElementById("todoItem").value='';
Run Code Online (Sandbox Code Playgroud)