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

6jjcrrmo  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(66)

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

const input = document.querySelector("#input");
const container = document.querySelector(".to_dos_container");
input.addEventListener("keyup", (event) => {
  if (event.key === "Enter") {
    add = `<div class="task_container">
    <input type="checkbox" class='done'>
    <p class='task'>${input.value}</p>
  </div>`;
    container.insertAdjacentHTML("afterbegin", add);
    input.value = "";
    lineThrough()
  }
});

function lineThrough() {
  var checked = document.querySelectorAll(".done");
  checked.forEach((c) => {
    c.addEventListener("click", (p) => {
      var task = document.querySelector(".task");
      if (c.checked) {
        task.style.textDecoration = "line-through";
        task.style.color = "gray";
      } else {
        task.style.textDecoration = "unset";
        task.style.color = "unset";
      }
    });
  });
}

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

gywdnpxw

gywdnpxw1#

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

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

字符串

var task = c.nextElementSibling;

相关问题