0
我很新操作JavaScript中的DOM並試圖做一個列表項,使用輸入的文本值,並在單擊列表項時刪除列表項。 我看到有幾種方法,也有更短的方法來做到這一點,但我試圖用最簡單的方法來操作DOM中的元素。未捕獲無法執行'節點'上的'removeChild':參數1不是'節點'類型
當我點擊一個列表項目時,出現錯誤「Node'上的'removeChild'執行失敗:參數1不是'Node'類型。在控制檯 從文檔中我會得到這個錯誤,如果「孩子不存在於頁面的DOM上」
但是從我所瞭解的我的li確實存在於頁面的DOM上。
有人可以請我解釋一下,就像我5,很簡單,減去行話我怎麼會出錯,爲什麼我得到這個錯誤?
請注意,我已經嘗試瞭解棧上發佈的類似問題的問題的答案:例如,使用removeChild「適當」的方式
taskList.removeChild(document.querySelectorAll("li"));
但我不認爲這是問題嗎?
也想用普通來解決這一/香草JS只能請
預先感謝您
HTML
<ul id="taskList">
<li>example</li>
</ul>
<input type="text" id="addTaskInput">
<button id="addTaskButton">Add Task</button>
的JavaScript
const taskList = document.querySelector("#taskList");
const addTaskInput = document.querySelector("#addTaskInput");
const addTaskButton = document.querySelector("#addTaskButton");
let taskItem = document.querySelectorAll("li");
addTaskButton.addEventListener("click",() => {
let taskItem = document.createElement("li");
taskItem.textContent = addTaskInput.value;
taskList.appendChild(taskItem);
addTaskInput.value = " ";
});
for (let i = 0; i < taskItem.length; i++) {
taskItem[i].addEventListener("click",() => {
taskList.removeChild(taskItem);
});
}
如果您試圖用'querySelectorAll'調用'removeChild',那麼您會遇到問題。 'querySelectorAll'返回一個列表,但'removeChild'需要一個節點。 – jmargolisvt