我有一个html表格的表格,其中包含一个表格,每次点击一个按钮时都会添加一行。添加每一行时,我希望新行中的每个字段的名称和ID(有四个)从第一行的“Id.0”更新为第二行的“Id.1”,然后“ Id.2“在第三个,等等我可以使用
来完成这个id没有问题var next=$("#QualificationRequirements tr:last").clone();
fixIds(next,nexdex);
nexdex++;
$("#QualificationRequirements").append(next);
function fixIds(element, counter) {
$(element).find("[id]").add(element).each(function() {
this.id = this.id.replace(/\d+$/, "")+counter;
}
}
但是我发现相同的逻辑不适用于name属性和
$(element).find("[name]").add(element).each(function() {
this.name = this.name.replace(/\d+$/, "")+counter;
});
导致出现错误,指出我无法在空对象上调用“replace”,因此看起来找不到name属性。
谁能看到我做错了什么?谢谢!
答案 0 :(得分:2)
问题来自您的陈述的这一部分:add(element)
请参阅,element
指的是完整的行,而行没有name属性。您只想对具有name属性的行内的输入进行操作,因此您应该从代码中删除该部分:
$(element).find("[name]").each(function() {
this.name = this.name.replace(/\d+$/, "")+counter;
});
答案 1 :(得分:1)
HTML元素上没有name
属性。相反,您需要将其作为属性访问:
this.setAttribute('name', this.getAttribute('name').replace(/\d+$/, "")+counter);
<强> Working Demo 强>
答案 2 :(得分:1)
使用$(this).attr('name');
获取并设置名称属性。
全行:
$(this).attr('name',$( this).attr('name').replace(/\d+$/, "")+counter);
答案 3 :(得分:0)
试试这个
$(element).find("[name]").add(element).each(function() {
this.attr("name",this.attr('name').replace(/\d+$/, "")+counter) ;
});