這是一個(gè)購(gòu)物清單,您可以在其中添加一些商品名稱,它將顯示該商品。刪除該項(xiàng)目時(shí),它將刪除該項(xiàng)目。最后,單擊該項(xiàng)目后,它將標(biāo)記為已完成。因此,創(chuàng)建項(xiàng)目和刪除項(xiàng)目工作正常,但單擊它們時(shí)會(huì)出現(xiàn)問(wèn)題。問(wèn)題(切換多個(gè)列表項(xiàng)時(shí)發(fā)生)假設(shè)您添加了 3 個(gè)項(xiàng)目(xxx、yyy、zzz),單獨(dú)單擊它們時(shí),會(huì)將它們切換為完整和不完整。但是 如果您選擇了 xxx、它們 zzz,如果您再次單擊 zzz,則不會(huì)正在工作。而如果點(diǎn)擊xxx,則會(huì)標(biāo)記為不完整。錯(cuò)誤script.js:91 Uncaught DOMException: 無(wú)法在“Node”上執(zhí)行“removeChild”:要?jiǎng)h除的節(jié)點(diǎn)不是此節(jié)點(diǎn)的子節(jié)點(diǎn)。在 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貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
來(lái)自MDN上的 QuerySelector() 方法:
Document 方法 querySelector() 返回文檔中與指定選擇器或選擇器組匹配的第一個(gè)元素。如果未找到匹配項(xiàng),則返回 null。
所以當(dāng)你寫(xiě):
let?spa?=?document.querySelector( ??`${liItem.tagName.toLowerCase()}?.completed` ??);
您將獲得 DOM 上與您的搜索匹配的第一個(gè)元素。但是您正在尋找 liItem 的子元素,其類別為“completed”。
你想寫(xiě)什么:
let?spa?=?liItem.querySelector(".completed");
額外注意:?.toggle("aClass") 方法在元素沒(méi)有類“aClass”時(shí)添加它,如果元素已經(jīng)有它,則將其刪除。因此您可以采取以下措施
liItem.classList.toggle("toggle");
脫離 if-else 并應(yīng)用它。
- 1 回答
- 0 關(guān)注
- 189 瀏覽
添加回答
舉報(bào)
0/150
提交
取消