Avatar billede mikkel_breum Nybegynder
21. oktober 2001 - 17:14 Der er 5 kommentarer og
1 løsning

dynamisk ændring af menu

Hejsa

Jeg skal ændre indholdet (<option>) af en menu (<select>) via javascript.
Mit problem er at jeg ikke ved hvordan jeg kan ændre ANTALLET af <option> elementer i mit <select> element.

Jeg gør foreløbig således:

Min Function ser således ud:
function opdaterMenu() {

detNye = [\"et\",\"to\"]
menuObj = MM_findObj(\'sted\')  //MM_findObj fungerer fint


for(i=0 ; i < detNye.length ; i++) {

menuObj.options[i].value=i;
menuObj.options[i].innerHTML=\"sted_\"+steder[i];
}
}


Og den menu jeg vil manipulere ser således ud:
  <select name=\"sted\">
    <option value=\"1\">K&oslash;benhavn</option>
    <option value=\"2\">Glostrup</option>
  </select>

Dette fungerer fint, fordi der er 2 elementer i min variabel \'detNye\', og der er i forvejen to pladser i min menu.

Men hvordan skal jeg gribe det an, hvis jeg vil udvide eller formindske antallet af <options> i min menu?

Jeg har fx:
detNye_1 = [\"et\",\"to\"]
detNye_2 = [\"A\",\"B\",\"C\",\"D\"]

... og jeg vil gerne kunne skifte imellem disse.
Avatar billede jakoba Nybegynder
21. oktober 2001 - 17:19 #1
du kan tilføje en ekstra option med

selelem.options[selelem.options.length] = new option( \'text\', \'value\' );

du kan fjerne eksisterende options med

selelem.options.length -= 2;  // fjerner 2 bageste options

jeg har også set
    selelem.options[3] = null;  // fjerner option med index 3
men er ikke sikker på hvormange browsere den virker i.

mvh JakobA
Avatar billede jakoba Nybegynder
21. oktober 2001 - 17:29 #2
her er en demo-side der leger med selectboksen:
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp66097.html
Avatar billede mikkel_breum Nybegynder
21. oktober 2001 - 17:45 #3
Jeg kan ikke få dette til at fungere:
selelem.options[selelem.options.length] = new option( \'text\', \'value\' );


Men dette virker fint
selelem.options.length -= 2;  // fjerner 2 bageste options

Ud fra det prøvede jeg
selelem.options.length += 2;  // tilføjer 2 options

og nu skal jeg se om det så kan kombineres med  noget i retning af:
for(i=0 ; i < detNye.length ; i++) {
menuObj.options[i].value=i;
menuObj.options[i].innerHTML=\"sted_\"+i;
}
Avatar billede mikkel_breum Nybegynder
21. oktober 2001 - 17:50 #4
Dette fungerer nu efter hensigten:

function lookup() {

steder = [\"et\",\"to\",\"tre\",\"fire\",\"fem\",\"seks\",\"syv\"];
menuObj = MM_findObj(\'sted\'); //Macromedia Dreamweaver function

// slet tidligere menuindhold
menuObj.options.length = 0;
//klargør menu til nyt indhold
menuObj.options.length = steder.length;

// fyld menu med indhold
for(i=0 ; i < steder.length ; i++) {
menuObj.options[i].value=i;
menuObj.options[i].innerHTML=\"sted_\"+steder[i];
}
}
Avatar billede mikkel_breum Nybegynder
21. oktober 2001 - 17:52 #5
Men jeg er da interesseret i at finde ud af hvorfor jeg ikke kunne få den mere elegante syntaks til at virke:

menuObj.options[menuObj.options.length] = new option( \'text\', \'value\' );
Avatar billede mikkel_breum Nybegynder
21. oktober 2001 - 17:58 #6
og nu har jeg fundet ud af det: når man copy/paster fra eksperten kan der komme usynlige tegn med, som gør at koden bliver fejlfortolket.

Nu kan jeg godt få det til at virke.
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