0

ユーザーが要素(フィールドセットやテキストボックスなど)を動的に追加できるフォームがあります。追加時に要素に新しいIDを割り当てることはできますが、ユーザーがその間に要素を追加することもできるため、順番にIDを割り当てることはできません。

したがって、たとえば、XXX1という名前のIDがあり、ユーザーはその後にxxx2という新しい要素を追加します。これで、ユーザーがXXX1の後に新しい要素を再度追加すると、XXX3として表示されます。したがって、要素の順序はXXX1、XXX3、XXX2です。追加時に名前を制御できません。だから私は追加後に名前を再割り当てしようとしています。

配列内のすべての要素を取得し、次のようにIDを変更しようとしています

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

ただし、ID XXX2が別の要素にすでに存在するため、これは機能しません。これに対する解決策を手伝ってください。

4

2 に答える 2

0

では、最初にの ID を変更しxxx2て邪魔にならないように移動し、後で元の位置に戻してはどうでしょうか?

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

最後の要素から最初の要素 (挿入先の位置の後ろ) に移動して、ID に 1 つ追加してみませんか?

例えば:

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 に答える