03. juni 2003 - 11:18Der er
8 kommentarer og 1 løsning
Dynamisk oprettelse af OPTGROUP's i en SELECT?
Hejsa!
Med IE 6.0 kom muligheden for at benytte OPTGROUP's i en SELECT box. Derfor vil jeg gerne dynamisk add'e disse - er der nogen der har et eksempel på dette?
Jeg har selv forsøgt at lave 2 nestede loops, ét ydre, der opretter og add'er OPTGROUP's elementerne og ét indre loop, der tilføjer de tilhørende OPTION elementer. Dette virker bare ikke ....
Jeps - selBox er ikke med i koden, men er som jeg skrev blot et tomt select element.
Jeg har allerede luret lidt på det med .options.add(), hvilket heller ikke virkede - men jeg har ikke forsøgt at benytte [index] - hvilket jeg lige vil teste nu.
Det ser desværre ikke ud til at man kan bestemme hvori collectionen "options" man ønsker at indsætte sin OPTGROUP, hvilket vil sige at den fejler hvis man forsøger at diktere et index. :-(
Ved jeg godt, deres metode virker skam også fint, bare ikke når man dynamisk ønsker at indsætte flere OPTGROUP's med underliggende OPTION's. Mine erfaringer siger at det i princippet er lige meget om man benytter .options.add() eller blot .add()
Problemet er at efter den første OPTGROUP er indsat komme de resterende til at ligge nested inde i denne <optgroup><optgroup><optgroup/><optgroup/> hvilket de ikke må!
Modsat et option element kan optgroup godt indsættes i en select vha. insertAdjacentElement metoden. Det betyder at generelle funktion skal se sådan her ud:
General.addOptionGrp = function (selectId, desc) { var opt = document.createElement("OPTGROUP"); opt.label = desc; selectId.insertAdjacentElement("beforeEnd", opt); return opt; }
Denne løsning er normalt ikke mulig med et option element, da man her skal bruge add metoden.
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.