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

HTML表格点击添加行时上方行文本消失问题求助

问题原因分析

你遇到的问题根源在于使用innerHTML +=来添加新行。当你这么做的时候,浏览器会把当前表格的HTML内容取出,拼接上新的行字符串,然后重新渲染整个表格——这意味着原来的输入框等元素会被销毁再重建,之前输入的文本自然就丢失了。

解决方案:使用DOM原生方法添加行

正确的做法是直接通过DOM API创建新的表格行和单元格,然后将它们追加到表格中,这样不会影响已有的元素和用户输入。下面是修正后的代码:

<div id="con">
  <table border="1" id="budgetMain">
    <tr>
      <th>Serial Number</th>
      <th>Description</th>
    </tr>
  </table>
</div>
<input type='button' value='Click Here' onClick='myFunc();' />
<script>
var serialNumber = 0;
function myFunc() {
  // 获取表格对象
  const table = document.getElementById("budgetMain");
  // 创建新行
  const newRow = document.createElement("tr");
  
  // 创建序号单元格并添加内容
  const serialCell = document.createElement("td");
  serialCell.textContent = ++serialNumber;
  newRow.appendChild(serialCell);
  
  // 创建描述输入框单元格
  const descCell = document.createElement("td");
  const input = document.createElement("input");
  input.type = "text";
  // 给每个输入框设置唯一id(可选,避免重复)
  input.id = `desc-${serialNumber}`;
  descCell.appendChild(input);
  newRow.appendChild(descCell);
  
  // 将新行追加到表格的tbody中(浏览器会自动为表格生成tbody)
  table.querySelector("tbody").appendChild(newRow);
}
</script>
额外说明
  • 原代码中所有输入框的id都是desc,这会导致HTML中id重复(id必须唯一),所以我改成了动态的desc-${serialNumber},后续如果需要获取某个输入框的值也更方便。
  • 使用DOM方法操作元素时,只会在现有DOM结构上添加新节点,不会破坏已有的元素和用户输入的内容,完美解决了文本消失的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:23:01