Array Object im IE ... lassen sich ArrayElemente löschen?
Jens Glander
- javascript
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
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
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