Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Javascript] Triple listbox dynamisch vullen

Pagina: 1
Acties:
  • 373 views sinds 30-01-2008
  • Reageer

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik heb een pagina waar ik 2 listboxes dynamisch vul. De eerste list bevat waardes die gewoon in HTML ingevoerd zijn:
HTML:
1
2
3
4
5
<select name="rve" id="rve" onChange="setOptions(document.forms[0].elements[3].options[document.forms[0].elements[3].selectedIndex].value);">
<option value="none">Kies...</option>
<option value="Raad van Bestuur">Raad van Bestuur</option>
<option value="Kenniscentrum">Kenniscentrum</option>
</select>


Met het stukje javascript dat erin staat roep ik een functie aan die de tweede listbox vult.

JavaScript:
1
2
3
4
5
6
7
8
9
function setOptions(o)
{ 
var afdeling = document.forms[0].elements[4]; 
afdeling.options.length = 0; 
if (o == "Raad van Bestuur") 
    {
        afdeling.options[afdeling.options.length] = new Option('Kies...');
        afdeling.options[afdeling.options.length] = new Option('College van Geneesheren-directeur');
    }


HTML:
1
2
<select name="afdeling" id="afdeling" onChange="setOptions2(document.forms[0].elements[4].options[document.forms[0].elements[4].selectedIndex].value);">
</select>



tot zo ver gaat het goed..

Nu wil ik op basis van de keuze in de tweede listbox een derde vullen.

Dit doe ik met dezelfde code als hierboven alleen ik spreek een ander element aan:

JavaScript:
1
2
3
4
5
6
7
8
function setOptions2(o) 
{ 
var keuze3 = document.forms[0].elements[5]; 
keuze3.options.length = 0; 
if (o == "College van Geneesheren-directeur") 
    {
        keuze3.options[keuze3.options.length] = new Option('Test');
    } 

HTML:
1
<select name="keuze3" id="keuze3">


Nu komt het fijne: als ik het test in Firefox werkt dit prima. Maar zodra ik het in Internet Explorer probeer werkt het vullen van de laatste listbox niet...

Waarom niet? Iemand ideeen?

[ Voor 5% gewijzigd door ViNyL op 25-07-2007 11:39 ]


  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Volgende valt me wel op:
HTML:
1
2
<select name="afdeling" id="afdeling" onChange="setOptions2(document.forms[0].elements[4].options[document.forms[0].elements[4].selectedIndex].value);">
</select>

Hierboven spreek je over elements[4], hieronder over elements[5].
JavaScript:
1
2
3
4
5
6
7
8
function setOptions2(o) 
{ 
var keuze3 = document.forms[0].elements[5]; 
keuze3.options.length = 0; 
if (o == "College van Geneesheren-directeur") 
    {
        keuze3.options[keuze3.options.length] = new Option('Test');
    } 

Maar waarom dit dan wel in FF werkt?

[ Voor 4% gewijzigd door funkwurm op 25-07-2007 11:38 ]


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Nee ik kijk daar naar element[4].. als die veranderd moet de functie aangeroepen worden om element[5] aan te passen..

[de eerste element[3] was een foutje in me post]

[ Voor 18% gewijzigd door ViNyL op 25-07-2007 11:40 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Waarom geef je geen referentie naar je formulier mee in je eventhandlers en gebruik je niet gewoon elements['elementname'] ?
Op deze manier is het niet erg onderhoudbaar...

Intentionally left blank


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Dat heb nu aangepast, maar dat helpt helaas niet...

En wat bedoel je hier precies mee?
"Waarom geef je geen referentie naar je formulier mee in je eventhandlers"

[ Voor 52% gewijzigd door ViNyL op 25-07-2007 11:54 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

ViNyL schreef op woensdag 25 juli 2007 @ 11:50:
Dat heb nu aangepast, maar dat helpt helaas niet...

En wat bedoel je hier precies mee?
"Waarom geef je geen referentie naar je formulier mee in je eventhandlers"
HTML:
1
2
3
4
5
6
7
8
<form>
  <select name="foo" onchange="setOptions(this, 'bar')">
    <option>..
    <option>..
    <option>..
  </select>
  <select name="bar"></select>
</form>

JavaScript:
1
2
3
4
5
6
7
function setOptions(select, relatedSelectName)
{
  var form = select.form;
  var relatedSelect = form.elements['relatedSelectName'];

  // etcetera
}

Intentionally left blank


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Thanks voor de uitleg. Ga er morgen gelijk even mee aan de gang.. Will post the outcome.

Hmm als ik het zo overneem en aanpas als je hier boven post krijg ik alleen maar de foutmelding:

"relatedSelect" has no name

Mijn originele functie is misschien niet pretty maar die werkt wel in FF... en niet in IE 8)7...
Heeft het soms te maken dat je elementen aanspreekt die er niet fysiek zijn (dus in je HTML)? maar dat deze ook met javascript aangemaakt zijn?

edit:

Topic mag dicht, script rewrite gedaan en functioneert nu. Laat nu de velden op een andere manier inladen en dat gaat in IE wel goed..

[ Voor 82% gewijzigd door ViNyL op 26-07-2007 09:51 ]

Pagina: 1