Jens Glander: Array Object im IE ... lassen sich ArrayElemente löschen?

Hi,
weiß jemand, ob sich Elemente eines Arrays im IE löschen lassen ?
Also
[
z.B.:
testArray = new Array(1,2,3,4,5);
]
Kann ich im IE eines dieser Elemente löschen (nicht nur auf Null setzen!) so dass sich die Länge des Arrays auch entsprechend ändert.

Danke,
Jens

  1. hi

    ich hab mir das script da unten grade erst selber ausgedacht und glaube nich dass es besonders 'sauber' ist einfach arrayname.length eine andere zahl zuzuweisen, sofern es sich bei dieser eigenschaft um eine eigentlich nur lesbare handelt - aber beim ie ist ja so einiges möglich wo ns sofort nen fehler kriegen würde...
    also funktionieren tut es:

    function loeschen(name,welches)
    {
    for(i = welches; i < window[name].length - 1; i++) window[name][i] = window[name][i + 1];
    window[name].length = window[name].length - 1;
    }
    test = new Array(1,2,3,4,5);
    loeschen("test",1);

    der array 'test' enthält zum schluss nur noch 4 elemente: 1,3,4,5.
    kannst dir ja einfach die funktion in dein script rein kopieren wenn du willst.
    also einfach mit loeschen(array-name,array-element) das entsprechende element entfernen lassen... - auch bei der funktion gilt: erstes element ist die 0. aber das kannst du ja auch ändern indem du einfach ganz oben in die funktion 'name--;' rein schreibst - dann ist das erste tatsächlich 1.

    cu

  2. Hallo Jens,

    Die Funktion slice(); hilft dir weiter. <../../tecc.htm#a9> (geht ab IE4)

    <script>
    // Funktion zum Löschen eines Arrayelementes
    function array_del(n)
    {
      var vorne=this.slice(0,n);
      var hinten=this.slice(n+1,this.length);

    return vorne.concat(hinten);
    }

    // als Methode für alle Arrays einführen
    Array.prototype.del=array_del;

    // Ausprobieren:
    // Testfeld erzeugen
    test = new Array("1","2","3","4","5");

    // viertes Element löschen
    test=test.del(3);

    // und anzeigen
    alert(test.join(" "));

    </script>

    Über die Eigenschaft prototype bin ich grade in der JavaScript Referenz von
    Netscape gestolpert: http://developer.netscape.com/docs/manuals/js/client/jsref/function.htm#1193426
    und da musste ich sie doch gleich mal ausprobieren.

    Gruss,
    Carsten