Avatar billede fri-hash Nybegynder
14. oktober 2002 - 16:02 Der er 8 kommentarer og
1 løsning

fjerne et/alle elementer i array

hvordan tømmes et array for elementer?

kan man fjerne et element midt i et array, og i så fald hvordan ser array'ets index'er så ud bagefter?
Avatar billede kmx Nybegynder
14. oktober 2002 - 16:13 #1
Loop gennem array og fjern sidste

<script language="JavaScript"><!--
function RemoveElement(elementnr) {
    // elementnr is the number of the element you wish to remove
    // the name of the array used here is array

    for (elementnr<array.length,elementnr++) {
        // assigns the value of elementnr+1 to elementnr, so you move all items by 1
        array[elementnr] = array[elementnr + 1];
    }
    array.length=array.length-1;
    // Yes it is as easy as this!
}
//--></script>
Avatar billede jakoba Nybegynder
14. oktober 2002 - 16:30 #2
du kan også anvende javascripts indbyggede splice metode:

arrayNavn.splice( 2, 1 ); // fjerner fra arrayelement 2 eet element frem

var arrayNav = new Array( "a", "b", "hellerup", "c" )
alert( arrayNavn[2] );  // skriver "hellerup"
arrayNavn.splice( 2, 1 );
alert( arrayNavn[2] );  // skriver "c"

mvh JakobA
Avatar billede fri-hash Nybegynder
15. oktober 2002 - 00:08 #3
"// Yes it is as easy as this!" ...må nu indrømme en "sprog-implementeret" funktion er nemmere


jakoba>> kan man angive en parameter der siger "resten af arrayet" eller skal man arrayNavn.splice(2, arrayNavn.length-2)
Avatar billede jakoba Nybegynder
15. oktober 2002 - 00:15 #4
du kan evt sige:
arrayNavn.splice(2, 5000); // den opdager selv når der ikke er flere at slette.
men dit forslag er mere korrekt.
Avatar billede fri-hash Nybegynder
15. oktober 2002 - 07:47 #5
jeg har bare et problem (måske fordi det var klokken lort inat jeg sad med det), men tilsyneladende tillades splice-metoden ikke på et optionsarray - kan det være rigtigt?
Avatar billede jakoba Nybegynder
15. oktober 2002 - 09:37 #6
det kan godt passe. et optionsarray er en lille del af en større sammenhængende konstruktione (select boksen) og der er i forvejen indbygget noget automatik i det der holder det fortløbende når man indsætter/fjerner elementer.

for at fjerne en celle i et option array behøver du blot sige:
    selboks.options[4] = null;
i de fleste brovsere.
for at fjerne alle elementer efter de 2 første kan du sige:
    selboks.options.length = 2;
så bliver de fjernet og selectboksen gentegnet (i de fleste browsere).

men som sædvanligt ikke alle browsere :(  der er ingen klare og klokkerene regler for hvordan browserne skal reagere når man prøver at ændre noget i et options array. fx hvad skal der ske hvis man siger:
    selboks.options[2] = "olsen";
i en selectboks med 5 elementer. "olsen" er en streng og ikke et Option objekt, så browseren skal finde på noget fornuftigt at gøre ved det.
Den kan 1) totalt ignongere den sætning, 2) oprette en Option objekt med "olsen" som .text property, 3) gå totalt i kage,  osv.

her er nogen eksempler på hvordan en selectboks kan masseres:
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp66097.html

mvh JakobA
Avatar billede fri-hash Nybegynder
15. oktober 2002 - 16:03 #7
jeg har styr på hvordan jeg indsætter nye options med new Option(), problemet er at hvis der i forvejen er 5, og de skal erstattes af 3 nye, så blev de to sidste tilbage - når jeg kommer hjem iaften må jeg gøre det med options.length, det er nok den der passer bedst i det der allerede er lavet .... håber du vil lægge et svar, jakoba
Avatar billede jakoba Nybegynder
15. oktober 2002 - 16:06 #8
ok. takker.
Avatar billede fri-hash Nybegynder
21. oktober 2002 - 13:49 #9
damn jeg er sløv, troede jeg havde lukket for længe siden......
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester