html 为什么属性只应用于第一个元素而不是它各自的元素

6jjcrrmo  于 2024-01-04  发布在  其他
关注(0)|答案(1)|浏览(268)

当我点击任何复选框添加待办事项css属性只适用于第一个元素。

  1. const input = document.querySelector("#input");
  2. const container = document.querySelector(".to_dos_container");
  3. input.addEventListener("keyup", (event) => {
  4. if (event.key === "Enter") {
  5. add = `<div class="task_container">
  6. <input type="checkbox" class='done'>
  7. <p class='task'>${input.value}</p>
  8. </div>`;
  9. container.insertAdjacentHTML("afterbegin", add);
  10. input.value = "";
  11. lineThrough()
  12. }
  13. });
  14. function lineThrough() {
  15. var checked = document.querySelectorAll(".done");
  16. checked.forEach((c) => {
  17. c.addEventListener("click", (p) => {
  18. var task = document.querySelector(".task");
  19. if (c.checked) {
  20. task.style.textDecoration = "line-through";
  21. task.style.color = "gray";
  22. } else {
  23. task.style.textDecoration = "unset";
  24. task.style.color = "unset";
  25. }
  26. });
  27. });
  28. }

个字符
我想当我点击添加待办事项css属性的复选框时,应该应用于其各自的待办事项。

gywdnpxw

gywdnpxw1#

document.querySelector(".task")选择第一个类为.task的元素。您需要使用nextElementSibling来选择类为.task的元素之后的元素,因为div中只有两个兄弟元素,它将选中相应的复选框。
改变这种

  1. var task = document.querySelector(".task");

字符串

  1. var task = c.nextElementSibling;

相关问题