這是一個購物清單,您可以在其中添加一些商品名稱,它將顯示該商品。刪除該項目時,它將刪除該項目。最后,單擊該項目后,它將標記為已完成。因此,創建項目和刪除項目工作正常,但單擊它們時會出現問題。問題(切換多個列表項時發生)假設您添加了 3 個項目(xxx、yyy、zzz),單獨單擊它們時,會將它們切換為完整和不完整。但是 如果您選擇了 xxx、它們 zzz,如果您再次單擊 zzz,則不會正在工作。而如果點擊xxx,則會標記為不完整。錯誤script.js:91 Uncaught DOMException: 無法在“Node”上執行“removeChild”:要刪除的節點不是此節點的子節點。在 HTMLLIElement.toggleItem這是我的代碼。let input = document.querySelector("#item-name");let button = document.querySelector("input[type=button]");let items = document.querySelector(".items");let ul = document.createElement("ul");items.appendChild(ul);function disableFunction() { button.disabled = false;}function callfun(event) { if (event.keyCode === 13) { console.log("Enter is pressed..."); createList(); }}input.addEventListener("input", disableFunction);button.addEventListener("click", createList);input.addEventListener("keypress", callfun);function createList() { createList();}function createList() { if (input.value.length) { let li = document.createElement("li"); li.className = "item"; let val = input.value; if (val.length > 10) { li.appendChild(document.createTextNode(val.slice(0, 7) + "...")); } else { li.appendChild(document.createTextNode(input.value)); } let btn = document.createElement("button"); let i = document.createElement("i"); i.className = "fa fa-trash fa-2x"; btn.appendChild(i); btn.addEventListener("click", deleteItem); // '<i class="fa fa-trash " aria-hidden="true"></i>'; //i = document.getElementsByTagName(i); li.appendChild(btn); ul.appendChild(li); input.value = ""; li.addEventListener("click", toggleItem); console.log("added..."); }}function deleteItem(e) { // console.log(e, e.target.parentElement.parentElement) let item = e.target.parentElement.parentElement; item.style.display = "none";}
1 回答

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
來自MDN上的 QuerySelector() 方法:
Document 方法 querySelector() 返回文檔中與指定選擇器或選擇器組匹配的第一個元素。如果未找到匹配項,則返回 null。
所以當你寫:
let?spa?=?document.querySelector( ??`${liItem.tagName.toLowerCase()}?.completed` ??);
您將獲得 DOM 上與您的搜索匹配的第一個元素。但是您正在尋找 liItem 的子元素,其類別為“completed”。
你想寫什么:
let?spa?=?liItem.querySelector(".completed");
額外注意:?.toggle("aClass") 方法在元素沒有類“aClass”時添加它,如果元素已經有它,則將其刪除。因此您可以采取以下措施
liItem.classList.toggle("toggle");
脫離 if-else 并應用它。
- 1 回答
- 0 關注
- 194 瀏覽
添加回答
舉報
0/150
提交
取消