[javascript] dynamische dropdown

Pagina: 1
Acties:

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Ik heb 2 dropdowns waarvan de eerste gevuld wordt met categorieen uit een database. de 2e moet gevuld worden met de subcategorieen van de geselecteerde categorie in de eerste dropdown.

via die forum heb ik wat gespiekt en tot de volgende oplossing gekomen, de arrays worden gegenereerd met php. Voor zover ik zie zou het prima moeten werken. Als de hoofdcategorie geselecteerd wordt roept ie setBox aan en zou de subcategorie gevuld moeten worden met de waardes in het passende array (arr1, arr2, enzovoorts).

Het probleem is echter dat ie maar de eerste 5 items eruit pakt en dan stopt :S. Ben er ondertussen achter dat als ik de lengte van de arrays opvraag in de functie met alert(arr1.length) de lengte neerkomt op 5, wat niet correct is. Als ik een array hard erin programmeer (zeg arr50 met 10 entries) en dan de lengte opvraag binnen de functie dan klopt het wel.

Hoe kan dit? ik snap er niks meer van.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<script language="javascript">
arr1 = new Array("Beroemdheden","Boeken","Films","Humor","Muziek","Podiumkunsten","Tv en Radio");
arr2 = new Array("Adviesbureaus","Bedrijven","Beroepen","Industriebedrijven","Kleine Ondernemingen","Loopbaan","Thuiswerk","Werkplaats");
arr3 = new Array("Besturingssystemen","Gebruikers","Hardware","Internet","Programmeren","Software");
arr4 = new Array("Algemene Wetenschappen","Alternatieve Wetenschappen","Astronomie","Biologie","Fysica","Geschiedenis","Sociale Wetenschappen","Weer","Wiskunde");
arr5 = new Array();
arr6 = new Array();
arr7 = new Array();
arr8 = new Array();
arr10 = new Array();
arr11 = new Array();
arr12 = new Array();
arr13 = new Array();
arr14 = new Array();
arr15 = new Array();
arr16 = new Array();
arr17 = new Array();
arr18 = new Array();
    
  function setBox(arrNr)
  {
    document.newgroup.subcat.length=0;
    for(i=0; i<=arrNr.length; i++)
    {
      document.newgroup.subcat.length++;
      document.newgroup.subcat.options[i].text = eval(arrNr)[i];
      document.newgroup.subcat.options[i].value = eval(arrNr)[i];
    }
  }
</script>

<select name="cat" onchange="setBox(this.value)">
  <option value="">Hoofdcategorie</option>
  <option value="arr1">Amusement</option>
  <option value="arr3">Computers en Internet</option>
  
  enzovoorts

  <option value="arr2">Zakelijk</option>        
</select>

<select name="subcat">
  <option>Subcategorie</option>
</select>

Verwijderd

Kun je niet d.m.v een switch de juiste array opvragen in setbox.

Dit lijkt mij makkelijker en logischer

dus iets in deze richting:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  function setBox( array_naam )
  {
     switch(array_naam)
     {
       case 'arr1':
         array = arr1;
      break;
      ....
     }

    document.newgroup.subcat.length=0;
    for(i=0; i<=array.length; i++)
    {
      document.newgroup.subcat.length++;
      document.newgroup.subcat.options[i].text = array[i];
      document.newgroup.subcat.options[i].value = array[i];
    }
  }

[ Voor 75% gewijzigd door Verwijderd op 17-06-2005 14:33 ]


  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Das geen optie want dan moet ik mn javascript aan gaan passen als ik er een categorie bij maak in de database.

Verwijderd

De switch vervangen door de eval functie?

array = eval(array_naam);


wilde gok!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script language="javascript">
var cats = new Array();
cats['arr1'] = new Array("Beroemdheden","Boeken","Films","Humor","Muziek","Podiumkunsten","Tv en Radio");
cats['arr2'] = new Array("Adviesbureaus","Bedrijven","Beroepen","Industriebedrijven","Kleine Ondernemingen","Loopbaan","Thuiswerk","Werkplaats");
... etc...

function setBox(arrNr)
  {
    document.newgroup.subcat.length=0;
    for(i=0; i<=cats[arrNr].length; i++)
    {
      document.newgroup.subcat.length++;
      document.newgroup.subcat.options[i].text = cats[arrNr][i];
      document.newgroup.subcat.options[i].value = cats[arrNr][i];
    }
  }


Zoiets? Niet getest, maar moet wel werken. :)

Verwijderd

Uhm een array met arrays hoezo simpel _/-\o_

[ Voor 3% gewijzigd door Verwijderd op 17-06-2005 15:20 ]

Pagina: 1