0

我有一个表单,它允许用户动态添加元素(可能是字段集或文本框)。添加时我可以为元素分配一个新的 ID,但我无法按顺序创建它,因为用户也可以在两者之间添加元素。

例如,有一个名为 XXX1 的 Id,用户在其后添加了一个新元素,即 xxx2。现在如果用户在 XXX1 之后再次添加一个新元素,它就会出现为 XXX3。所以元素的顺序是XXX1,XXX3,XXX2。添加名称时我无法控制名称。所以我试图在添加后重新分配名称。

我正在尝试获取数组中的所有元素并按如下方式更改 ID

document.getElementById('xxx3').setAttribute('id', 'xxx2');

但这不起作用,因为另一个元素的 ID XXX2 已经存在。请帮我解决这个问题。

4

2 回答 2

0

为什么不从最后一个元素到第一个元素(在您要插入的位置之后的那个)并将一个添加到 ID 中?

例如:

var insertAt = 2; // for an element to be called xxx2
var els = [...]; // an array with all of the elements
if(els.length >= insertAt){
  for(var i = els.length-1; i >= insertAt-1; --i){
    els[i].setAttribute('id', 'xxx'+(i+2));
  }
}
// Add the new element here which will be called xxx2
于 2012-10-08T12:45:40.993 回答
0

那么为什么不xxx2先更改 ID,将其移开,然后再将其放回原处呢?

document.getElementById('xxx2').setAttribute('id', 'temporaryId');
document.getElementById('xxx3').setAttribute('id', 'xxx2');
document.getElementById('temporaryId').setAttribute('id', 'xxx3');
于 2012-10-08T12:33:55.293 回答