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

如何使用JavaScript的querySelector实现表格行编辑功能?

问题原因

  • document.querySelectorAll("table > tbody > tr") 获取的是所有tr组成的节点集合,不是你要编辑的某一行,给集合设置innerHTML不会生效
  • 模板字符串里的HTML标签被转义成了<、"这类实体字符,浏览器会把它们解析成普通文本,不会渲染成输入框
  • 没有用到传入的index参数定位指定编辑行,默认值"x"是字符串,也无法作为索引取到对应元素

修正后代码

const editRow = (index) => {
  // 拿到所有行后通过传入的数字索引取到目标编辑行
  const trList = document.querySelectorAll("table > tbody > tr");
  // 这里增加索引合法性判断,避免报错
  if (index < 0 || index >= trList.length) return
  const targetTr = trList[index];
  // 直接写原生HTML标签,不要用转义后的实体字符
  const newRow = `
    <tr>
      <td>
        <input type="text" name="name" />
      </td>
      <td>
        <input type="text" name="umur" />
      </td>
      <td>
        <input type="text" name="address" />
      </td>
      <td colspan = 2>
        <span class="btn btn-info" onClick="saveData()">Save</span>
      </td>
    </tr>`;
  targetTr.innerHTML = newRow;
};

优化建议

  • 渲染输入框时可以把原有行的内容预先填到输入框的value属性中,避免用户重新填写全部内容
  • 绑定编辑按钮点击事件时,务必传入对应行的数字索引作为editRow的参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 17:15:00