Avatar billede budda Nybegynder
22. februar 2003 - 03:29 Der er 14 kommentarer og
1 løsning

Tømme en dropdown menu..

Jeg har en dropdown som jeg gerne vil have tømt indholdet af.. ligegyldigt hvad der står der i.. Ved hjælp fra lidt JS nogen der kan hjælpe mig med den lille opgave ?
Avatar billede skg Nybegynder
22. februar 2003 - 04:35 #1
sæt hver option til null

eksempel:

selectOptions = document.forms[0].elements[0].options;
for(var i=0; i<selectOptions.length; i++)
{
  selectOptions[i] = null;
}
Avatar billede budda Nybegynder
22. februar 2003 - 10:31 #2
Kan ikke få den til at virke...
Avatar billede budda Nybegynder
22. februar 2003 - 10:41 #3
Kan det hjælpe at alle de options der er i menuen har value med et nummer nemmel 1 og 10000 ??
Avatar billede Slettet bruger
22. februar 2003 - 11:27 #4
Smid et link til din side.
Avatar billede budda Nybegynder
22. februar 2003 - 12:05 #5
Avatar billede Slettet bruger
22. februar 2003 - 12:13 #6
Du har glemt at afslutte script-tagget...
Avatar billede budda Nybegynder
22. februar 2003 - 12:27 #7
sådan nu er det tilføjet :)
Men det virker stadig ikke..

Den fjerner en og så reloader den så de er der igen..
Avatar billede Slettet bruger
22. februar 2003 - 12:35 #8
Det er fordi, du har set det på en submit knap:

<input type="button" value="Fjern dem alle..." name="hej" onClick="flytdem();">
Avatar billede budda Nybegynder
22. februar 2003 - 13:25 #9
Den fjerner kun hver anden :/..
Men jeg kører bare funktionen flere gange..
Avatar billede budda Nybegynder
22. februar 2003 - 13:32 #10
function flytdem(){
selectOptions = document.forms[0].elements[0].options;
u=7
for(var v=0; v<u; v++) {
for(var i=0; i<selectOptions.length; i++) { selectOptions[i] = null; }
}
}

lavede funktionen om til dette :)
Avatar billede mortrr Praktikant
22. februar 2003 - 13:35 #11
Det er altså ikke en specielt anbefalelsværdig måde at gøre det på.
Man fjerner ikke et element ved bare at sætte dets værdi til null.
Det virker, men man bør bruge den rigtige metode (method), som er Options.remove

<html>
<head><script>
function flytdem(){
  selectOptions = document.forms[0].elements[0].options;
  optionCount=selectOptions.length;
  for(var i=0; i<optionCount; i++) {
    selectOptions.remove(0);
  }
  return false;
}
</script>
<title></title>
</head>
<body>
<form>
  <p><select name="dropmenuen" size="1">
    <option value="1">Nummer 1</option>
    <option value="2">Den anden</option>
    <option value="1000">Hey en til</option>
  </select><input type="submit" value="Fjern dem alle.." name="hej" onClick="return flytdem();"></p>
</form>
</body>
</html>

Desuden ville din submit (fjern dem knappen) sende siden til sig selv, så du startede forfra. Derfor en return false, og return fjerndem().

- Morten
Avatar billede skg Nybegynder
23. februar 2003 - 03:37 #12
mortrr > det giver nøjagtigt det samme, om man bruger remove() eller on man bare sætte den pågældende option = null.

men en ting jeg lige kom i tanke om at det kode jeg lavede til at starte med er helt forkert. Det skulle være sådan her:

selectOptions = document.forms[0].elements[0].options;
while(selectOptions.length>0)
{
  selectOptions[0] = null;
}



og ja, man skal ikke bruge en submit button til at udføre javascript, tsk tsk
Avatar billede skg Nybegynder
23. februar 2003 - 03:51 #13
det er faktisk en lille smule hurtigere bare at sætte den til null, i stedet for at bruge remove -- ja, jeg kedede mig og testede det
Avatar billede mortrr Praktikant
23. februar 2003 - 12:15 #14
Det er muligt at det virker, men det gør det ikke mere rigtigt.

Ved bare at sætte objekt xxx=null inviterer du til memory-leaks i programmet. Det objekt som pointeren pegede på, eksisterer stadig.
Hvis der findes en indbygget metode til at fjerne noget, så brug den.

:-)

- Morten
Avatar billede skg Nybegynder
23. februar 2003 - 12:30 #15
tjaa... hvis det var tilfældet så ville det være grund nok til ikke at sætte det til null, men efter også at have testet det, så kan man vel kun konkludere at min metode er bedre - da den er hurtigere :-)

den brugte faktisk mere memory på at bruge remove() *G*

/ Søren
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