Toon posts:

[JS] Optgroup dynamisch uitlezen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben bezig om een crosselect iets inzichtelijker te maken met optgroups, je weet wel:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<SELECT>
    <OPTGROUP LABEL="Alkaline Metals">
        <OPTION>Lithium (Li)</OPTION>
        <OPTION>Sodium (Na)</OPTION>
        <OPTION>Potassium (K)</OPTION>
    </OPTGROUP>
    <OPTGROUP LABEL="Halogens">
        <OPTION>Fluorine (F)</OPTION>
        <OPTION>Chlorine (Cl)</OPTION>
        <OPTION>Bromine (Br)</OPTION>
    </OPTGROUP>        
</SELECT>

Nu weet ik wel hoe ik dit dynamisch kan aanmaken:
code:
1
2
3
var optGroup = document.createElement('optgroup');
optGroup.label = 'dynamisch label';
myselect.appendChild(optGroup);

Maar nu is alleen het uitlezen een probleem, omdat die niet in myselect.options.length uit te lezen zijn.
Het probleem is namelijk dat na een actie in de crosselect de hele lijst wordt uitgelezen, het verplaatste option wordt verwijderd, en de lijst weer wordt opgebouwd. Hierbij blijven de optgroups gewoon staan en worden de options allemaal onderaan erin gezet.

De aanpak is dus de options per optgroup uit te lezen, maar de hamvraag is dus hoe? GOT search en Google bieden mij nog geen uitkomst.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:24

gorgi_19

Kruimeltjes zijn weer op :9

Javascript hoort in Webdesign & Graphics :)
Zie P&W FAQ - HTML / javascript /css, etc...

>> Webdesign & Graphics

[ Voor 14% gewijzigd door gorgi_19 op 14-09-2004 17:13 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Vraag de childNodes van de select op, dan zul je zien dat je er 2 krijgt (de optgroups), daarvan kun je dan ook weer de childNodes van opvragen (de options).

[ Voor 6% gewijzigd door André op 14-09-2004 17:15 ]


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Andere optie: werk met getElementsByTagName() om de collecties te doorlopen.

code:
1
2
3
4
var deSelect = document.getElementById('deSelect');
var deOptgroups = deSelect.getElementsByTagName('OPTGROUP');

var eersteOptgroup = deOptgroups[0].getElementsByTagName('OPTION');

Today's subliminal thought is: