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

使用jQuery克隆表格行后,部分输入框id无法修改的问题

问题原因及解决方案

问题根源

  1. HTML id唯一性冲突:你给<td>设置了id="findTaskName"和id="findactivitiesName",但HTML规范中id必须全局唯一。克隆行后页面会出现多个相同id的<td>,此时document.querySelector只会匹配第一个出现的#findactivitiesName元素(原第一行的td),导致你修改的是原行而非新行的输入框id。
  2. 选择器范围错误:全局查找元素时没有限定在新行范围内,加上混合使用jQuery和原生JS,进一步增加了定位错误的概率。

修复后的代码

$(function () {
    $('.add-line-button').click(function () {
        var rowNum = $("#table tbody tr").length;
        const rowId = 'tablerow[' + rowNum + ']';
        var collectionNamePrefix = 'tablerow[' + rowNum + ']';
        // 修复原选择器的引号闭合问题
        var newRow = $("#table tbody tr[id='tablerow[0]']").clone().attr('id', rowId).attr('name', collectionNamePrefix);

        // 直接在新行内部查找元素,避免全局冲突
        newRow.find('.findTaskName input')
              .attr('id', 'hdnTaskName[' + rowNum + ']')
              .val('');
        newRow.find('.findactivitiesName input')
              .attr('id', 'hdnActivityName[' + rowNum + ']')
              .val('');

        $("#table tbody").append(newRow);
    });
});

配套HTML修改

把原表格行中的<td>标签id改为class,避免重复:

  • 将<td id="findTaskName">改为 <td class="findTaskName">
  • 将<td id="findactivitiesName">改为 <td class="findactivitiesName">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:06:25