bernd: Array: Element ist Pointer?

Beitrag lesen

Hi,

Ich habe es jetzt so gemacht

for (i=Number(this.nbrElements)-1; i>=Number(strPos); i--) {
  this.content[i+1] = this.content[i];
 }
 this.nbrElements++;
 elm = new Element();
 elm.setName(strType);
 elm.setAttributes(aAttributes);
 elm.setData(strData);
 this.content[Number(strPos)]=elm;

Mit unshift und splice etc. hat es bei auch nicht funktioniert.

Mit splice sollte es auch gehen, sofern dein Browser das kann.
this.content.splice(Number(strPos), 0, elm);

So wie du es jetzt gelöst hast, geht es natürlich auch. Wenn du das
öfters in deinem Code brauchst, dann wäre eine Funktion geschickter.

function InsertAt(array, elm, pos)
{
  for (var i = array.length; i > pos; --i)
    array[i] = array[i - 1];

array[i] = elm;
}

InsertAt(this.content, Number(strPos), elm);

oder gleich das Array-Object um eine Methode erweitern.

Array.prototype.insert = Array_InsertAt;
function Array_InsertAt(elm, pos)
{
  for (var i = this.length; i > pos; --i)
    this[i] = this[i - 1];

this[i] = elm;
}

this.content.insert(Number(strPos), elm);

Aber all dies ist jetzt nur als Nachtrag gedacht, denn du hast
ja schon eine funktionierende Lösung.

Was mir jetzt noch unklar ist, warum du dir die Arraygröße in nbrElements merkst, denn this.content.length liefert diese auch zurück.

bernd