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

ToDoList首次点击需双击显示删除线问题排查求助

解决ToDoList首次点击事项需双击才显示删除线的问题

问题根源

新添加的事项首次点击需双击才生效,核心原因是样式判断逻辑和初始样式定义不匹配:

  • CSS中.markIcon默认通过样式表设置visibility: hidden
  • JS的addStrike函数判断的是元素的内联样式(markIcon.style.visibility),但新创建的元素没有设置内联visibility属性,首次点击时该值为空字符串,不等于"hidden",导致逻辑走了else分支(把图标设为hidden),第二次点击才会触发正确的状态切换。

修复方案

方案1:用CSS类控制状态(推荐,符合样式与逻辑分离原则)

  1. 修改CSS,新增控制图标显示的类:
.markIcon {
  order: 1;
  padding: 12px;
  color: white;
  visibility: hidden; /* 保持默认隐藏 */
}
/* 新增类控制显示 */
.markIcon.show {
  visibility: visible;
}
  1. 调整JS的addStrike函数,通过类切换状态:
function addStrike() {
  const isMarkVisible = markIcon.classList.contains('show');
  if (!isMarkVisible) {
    markIcon.classList.add('show');
    item.style.backgroundColor = "#888888";
    to_do_text.classList.add("to_do_text_on");
    delButton.classList.add("del_but_on");
  } else {
    markIcon.classList.remove('show');
    to_do_text.classList.remove("to_do_text_on");
    delButton.classList.remove("del_but_on");
    item.style.backgroundColor = "white";
  }
}

方案2:修改判断逻辑兼容初始空值

如果不想调整CSS,直接修改JS的判断条件,包含初始空值的情况:

function addStrike() {
  // 空字符串表示初始状态(样式表设置的hidden)
  if (markIcon.style.visibility === "hidden" || markIcon.style.visibility === "") {
    markIcon.style.visibility = "visible";
    item.style.backgroundColor = "#888888";
    to_do_text.classList.add("to_do_text_on");
    delButton.classList.add("del_but_on");
  } else {
    markIcon.style.visibility = "hidden";
    to_do_text.classList.remove("to_do_text_on");
    delButton.classList.remove("del_but_on");
    item.style.backgroundColor = "white";
  }
}

完整修复后的JS代码(以方案1为例)

const addButton = document.getElementById("add_but");
const input = document.getElementsByTagName("input");
addButton.addEventListener("click", getText);
function getText() {
  //add item
  const item = document.createElement("div");
  item.classList.add("item");
  //add mark and text
  const markandText = document.createElement("div");
  markandText.classList.add("markandText");
  // add text
  const to_do_text = document.createElement("span");
  to_do_text.classList.add("to_do_text");
  // add markicon
  const markIcon = document.createElement("span");
  markIcon.classList.add("markIcon");
  markIcon.innerHTML = "✓";
  //add text and markicon to markandtext
  markandText.appendChild(to_do_text);
  markandText.appendChild(markIcon);
  // add button
  const delButton = document.createElement("button");
  delButton.classList.add("del_but");
  delButton.innerHTML = "&#10005";
  // add markandText and button to item
  item.appendChild(markandText);
  item.appendChild(delButton);
  const items = document.getElementById("items");

  // add item to items
  items.appendChild(item);
  if (input[0].value != "") {
    item.style.visibility = "visible";
    to_do_text.innerHTML = input[0].value;
  }
  item.addEventListener("click", addStrike);

  delButton.addEventListener("click", delFunc);
  function addStrike() {
    const isMarkVisible = markIcon.classList.contains('show');
    if (!isMarkVisible) {
      markIcon.classList.add('show');
      item.style.backgroundColor = "#888888";
      to_do_text.classList.add("to_do_text_on");
      delButton.classList.add("del_but_on");
    } else {
      markIcon.classList.remove('show');
      to_do_text.classList.remove("to_do_text_on");
      delButton.classList.remove("del_but_on");
      item.style.backgroundColor = "white";
    }
  }
  function delFunc() {
    item.style.display = "none";
  }
}

内容的提问来源于stack exchange,提问作者Linh Chi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:44:54