当我点击Add to-Dos的任何复选框时,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";
      }
    });
  });
}
<div class="text_area">
  <input type="checkbox" class="disabled" disabled>
  <input id="input" placeholder="Create a new todo..." type="text">
</div>
<div class="to_dos_container">
</div>

我希望当我点击Add To-Dos的复选框时,应在其各自的To-Do上应用css属性.

推荐答案

document.querySelector(".task") Select 具有类.task的第一个元素.您需要使用nextElementSibling来 Select 类为.task的元素后面的元素,因为div中只有两个sibling 元素,它将选中相应的复选框.

改变这一点

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

对这件事

var task = c.nextElementSibling;

Javascript相关问答推荐

主要内部的ExtJS多个子应用程序

JS、C++和C#给出不同的Base 64 Guid编码结果

如何为GrapesJS模板编辑器创建自定义撤销/重复按钮?

使用复选框在d3.js多折线图中添加或删除线条

JQuery. show()工作,但. hide()不工作

如何在不创建新键的情况下动态更改 map 中的项目?

我怎么才能得到Kotlin的密文?

如何在不影响隐式类型的情况下将类型分配给对象?

为什么云存储中的文件不能公开使用?

匹配一个或多个可选重复的特定模式

JavaScript&;Reaction-如何避免在不使用字典/对象的情况下出现地狱?

每隔3个项目交替显示,然后每1个项目交替显示

使用可配置项目创建网格

如何在每隔2分钟刷新OKTA令牌后停止页面刷新

脚本语法错误只是一个字符串,而不是一个对象?

Played link-Initialize.js永远显示加载符号

使用Java脚本在div中创建新的span标记

如果我将高度设置为其内容的100%,则在Java脚本中拖动以调整面板大小时会冻结

与find()方法一起使用时,Mongoose中的$or运算符没有提供所有必需的数据

如何从图表中映射一组图表-js使用REACT