Toon posts:

[JS] options in pulldown menu

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende probleem.
Ik heb twee select's (pulldown menus), de geslecteerde waarde in de eerste pulldown menu komt overeen met een 2d javascript array, waaruit ik de items lees die ik in het tweede menu stop.
Maar hoe kan ik javascript vertellen dat hij de geslecteerde optie als een array variabele moet zien, zodat ik index-waarden ([1][2]) kan meegeven om een item uit de array te halen en in het tweede pulldown menu te kunnen stoppen.

alvast bedankt voor de hulp.

  • André
  • Registratie: Maart 2002
  • Laatst online: 23-04 12:47

André

Analytics dude

Wat heb je nu al dan en wat lukt er niet precies?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik vraag me af of je op een normale manier kan truuken dat een eval van je variabele wordt gezien als een multi-dimensionale array waarde (wat dus eigenlijk twee pointers zijn) :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Waarom geef je de waarden in je eerste dropdown list niet gewoon een nummer dan? Die kan je dan als index gebruiken voor de array. Javascript kent ook associatieve arrays (arrays met een string als index), aangezien je waarden toch uniek zijn kan je die ook gebruiken.

If I can't fix it, it ain't broken.


Verwijderd

Topicstarter
André schreef op dinsdag 01 november 2005 @ 20:17:
Wat heb je nu al dan en wat lukt er niet precies?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var Nederland = new Array(new Array("Leeuwarden", "N 53.2", "E 5.78", "GMT+1"), new Array("Groningen", "N 53.22", "E 6.55", "GMT+1"), new Array("Assen", "N 53", "E 6.55", "GMT+1"), new Array("Emmen", "N 52.5", "E 6.23", "GMT+1"), new Array("Zwolle", "N 52.5", "E 6.08", "GMT+1"), new Array("Enschede", "N 52.22", "E 6.9", "GMT+1"), new Array("Deventer", "N 52.25", "E 6.2", "GMT+1"), new Array("Ede", "N 52.03", "E 5.67", "GMT+1"), new Array("Nijmegen", "N 51.85", "E 5.75", "GMT+1"), new Array("Arnhem", "N 51.98", "E 5.92", "GMT+1"));


function select_country() {
   myForm.city.options.length = 0;                                              
   for (i=0;i<=(myForm.country.options[myForm.country.selectedIndex].text).length; i++) {
     myForm.city.options[i] =  newOption((myForm.country.options[myForm.country.selectedIndex].text)[i][0],(myForm.country.options[myForm.country.selectedIndex].text)[i][0]);  
   }
}



<form method="POST" name="myForm">
   <select name="country" font face="Arial" onchange="select_country()">
      <option>Nederland</option>
   </select>
   <select name="city" font face="Arial">
   </select>
</form>


dit werkt dus niet, ook niet als ik eval(myForm.country.options[myForm.country.selectedIndex].text) gebruik.

iemand een oplossing

[ Voor 98% gewijzigd door Verwijderd op 01-11-2005 23:50 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:26

crisp

Devver

Pixelated

eval = evil en hier ook niet nodig:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function select_country(country_select)
{
    var form = country_select.form;
    var country = country_select[country_select.selectedIndex].value;
    var city_select = form.elements['city'];
    city_select.options.length = 0;
    if (country && window[country])
    {
        var options = window[country];
        for (var i = 0, j = options.length; i < j; i++)
        {
            city_select[i] = new Option(options[i][0], options[i][0]);
        }
    }
}

HTML:
1
2
3
4
5
6
7
8
<form method="POST" action="#">
    <select name="country" onchange="select_country(this)">
        <option value="">Maak een keuze</option>
        <option value="Nederland">Nederland</option>
    </select>
    <select name="city">
    </select>
</form>

hoewel window[property] wel een smerige manier is om globals aan te spreken. In dit geval zou je dat ook weer in een array kunnen stoppen ;)

[ Voor 7% gewijzigd door crisp op 02-11-2005 00:11 ]

Intentionally left blank


  • André
  • Registratie: Maart 2002
  • Laatst online: 23-04 12:47

André

Analytics dude

Oh, op die manier :)

code:
1
2
3
4
5
6
7
8
9
10
function select_country()
{
  myForm.city.options.length = 0;
  optiontext = window[myForm.country.options[myForm.country.selectedIndex].text];

  for (i = 0; i <= optiontext.length; i++)
  {
    myForm.city.options[i] = new Option(optiontext[i][0], optiontext[i][0]);    
  }
}


/edit:
Altijd eerst refreshen om te zien of crisp niet langs geweest is :P

[ Voor 11% gewijzigd door André op 02-11-2005 00:19 ]


Verwijderd

Topicstarter
dank jullie wel voor de reacties!
Pagina: 1