更改附加表行字段jQuery的名称

时间:2013-08-20 17:00:24

标签: javascript jquery html

我有一个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属性。

谁能看到我做错了什么?谢谢!

4 个答案:

答案 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) ;
});