javascript 未捕获的类型错误:无法在"节点"上执行"包含":HTMLUListElement中的参数1不是类型"Node",< anonymous>

mitkmikd  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(105)
const icon = `<div class="container">
  <input type="checkbox" id="cbx2" style="display: none;">
  <label for="cbx2" class="check">
      <svg width="1.5rem" height="1.5rem" viewBox="0 0 25 25">
          <path d="M 1 9 L 1 9 c 0 -5 3 -8 8 -8 L 9 1 C 14 1 17 5 17 9 L 17 9 c 0 4 -4 8 -8 8 L 9 17 C 5 17 1 14 1 9 L 1 9 Z"></path>
          <polyline points="1 9 7 14 15 4"></polyline>
      </svg>
  </label>
</div>`
  li.innerHTML += icon

    todoUl.addEventListener("click", (e) => {
  const idAttr = e.target.closest("li").getAttribute("id")

  if (e.target.contains("check")) {
    e.target.parentElement.classList.toggle("checked")
    localStorage.setItem("todoList", JSON.stringify(todoList))
  } else if (e.target.classList.contains("fa-trash")) {
    e.target.parentElement.remove()
    todoList = todoList.filter((todo) => todo.id != idAttr)
    localStorage.setItem("todoList", JSON.stringify(todoList))
  }
})

app. js:97未捕获的类型错误:无法在"节点"上执行"包含":参数1不是"Node"类型。

HTMLUListElement中的##。

    • 我得到了这个错误,它需要一个非常简单的更改,但我不能弄清楚。我希望它保存勾选的按钮到localStorage,如果任务完成,我希望它工作,但当我刷新页面时,它返回到其原始状态。我是新的编码。**
blmhpbnm

blmhpbnm1#

Node.contains()是一个API,它接受一个Node并检查它是否存在于测试器中。https://developer.mozilla.org/en-US/docs/Web/API/Node/contains
您的问题使用以下代码:

todoUl.addEventListener("click", (e) => {
  const idAttr = e.target.closest("li").getAttribute("id")

  if (e.target.classList.contains("check")) {
    e.target.parentElement.classList.toggle("checked")
    localStorage.setItem("todoList", JSON.stringify(todoList))
  } else if (e.target.classList.contains("fa-trash")) {
    e.target.parentElement.remove()
    todoList = todoList.filter((todo) => todo.id != idAttr)
    localStorage.setItem("todoList", JSON.stringify(todoList))
  }
})

相关问题