You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript创建待办列表:如何实现点击列表元素触发删除功能

解决方案

有两种常用的实现方式,你可以根据需求选择:


方案1:创建元素时直接绑定点击事件

这个方式逻辑最直观,适合初学者快速理解,你只需要在创建li元素的逻辑里,新增一行事件绑定代码即可。
另外注意你现有代码里所有动态生成的li都设置了相同的id="listid",HTML规定id必须全局唯一,重复id会导致后续DOM操作异常,建议删除这行或者换成class属性。
修改后的完整createlist代码如下:

function createlist() {
  let x = document.forms["todo"]["thing"].value;
  // 加个非空判断,避免添加空待办
  if (!x.trim()) return;
  var head = document.createElement("li");
  head.innerText = x;
  head.style.color = "red";
  // 删掉重复id的设置,或者改成head.className = "list-item"
  // head.setAttribute("id", "listid");
  // 绑定点击删除事件
  head.addEventListener('click', function() {
    // 点击时删除当前被点击的元素
    this.remove();
  })
  document.getElementById("myUL").appendChild(head);
}

方案2:事件委托(更推荐,性能更好)

如果你的待办列表可能会有大量条目,给每个li单独绑定事件会占用额外内存,这种情况可以直接给父元素#myUL绑定事件,利用事件冒泡机制统一处理所有子元素的点击,不管是现有还是后续动态新增的li都能生效。
你不需要修改原有createlist的逻辑,只需要额外加一段全局绑定代码即可:

// 直接给父容器绑定点击事件
document.getElementById('myUL').addEventListener('click', function(e) {
  // 判断当前点击的元素是不是li标签
  if (e.target.tagName === 'LI') {
    // 删除被点击的li
    e.target.remove();
  }
})

内容的提问来源于stack exchange,提问作者Hansa Narang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:54:07