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

如何将用户输入内容插入<li>?JavaScript待办列表问题

待办列表功能修正方案

问题定位

你的JS代码里这一行是核心错误:

li.appendChild((element.attribute = input));

element变量未定义,且这种赋值方式无法生成可插入DOM的文本节点,这就是输入内容无法显示的原因。你已经掌握document.createTextNode,直接结合用户输入就能解决问题。

修正后的完整代码

HTML(移除多余空列表项)

<div>
  <input type="text" id="task" placeholder="What do you need to do?" />
  <button class="btn" onclick="createToDo()">Submit</button>
</div>
<div>
  <ul id="list"></ul>
</div>

JavaScript(两种实现方式,任选其一即可)

方式1:用你熟悉的document.createTextNode
function createToDo() {
  // 获取输入值并过滤首尾空格
  var input = document.getElementById("task").value.trim();
  
  // 空输入直接返回,避免生成空列表项
  if (!input) return;

  var ul = document.getElementById("list");
  var li = document.createElement("li");
  
  // 将用户输入转为文本节点插入li
  var textNode = document.createTextNode(input);
  li.appendChild(textNode);
  
  ul.appendChild(li);
  
  // 清空输入框,提升操作体验
  document.getElementById("task").value = "";
}
方式2:更简洁的textContent赋值(新手友好)
function createToDo() {
  var input = document.getElementById("task").value.trim();
  if (!input) return;

  var ul = document.getElementById("list");
  var li = document.createElement("li");
  
  // 直接给li赋值文本内容,底层自动创建文本节点
  li.textContent = input;
  
  ul.appendChild(li);
  document.getElementById("task").value = "";
}

关键细节说明

  • trim()用于过滤纯空格的无效输入
  • 空输入判断避免生成无意义的空列表项
  • 清空输入框让用户可以快速输入下一个任务
  • 移除原HTML中多余的<li id="taskInput">,因为我们每次都会创建新的列表项元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:42:47