Markus: Was ist falsch?

Beitrag lesen

Hi Leute

Habe ein "Bezirk" und ein "Bundesland" Dropdown:

Wenn ein Bezirk ausgewählt ist soll das Bundesland an den ausgewählten Bezirk ausgewählt werden.

Funktioniert im moment so(aber umständlich):

var bezirk =document.Formular.Bezirk.selectedIndex;

function chkBezirk(bezirk)
{
 var bezirk =document.Formular.Bezirk.selectedIndex;

if(document.Formular.Bezirk.length < 122) return true;

else

if(bezirk == 0) document.Formular.Bundesland.selectedIndex = 0;
  if(bezirk == 12 || bezirk == 13 || bezirk == 26 || bezirk == 35 || bezirk == 55 || bezirk == 62 || bezirk == 63 || bezirk == 64 || bezirk == 70) document.Formular.Bundesland.selectedIndex = 1;
  if(bezirk == 16 || bezirk == 29 || bezirk == 39 || bezirk == 40 || bezirk == 76 || bezirk == 79 || bezirk == 85 || bezirk == 86 || bezirk == 89 || bezirk == 119) document.Formular.Bundesland.selectedIndex = 2;
  if(bezirk == 1 || bezirk == 3 || bezirk == 7 || bezirk == 19 || bezirk == 20 || bezirk == 30 || bezirk == 31 || bezirk == 42 || bezirk == 43 || bezirk == 50 || bezirk == 56 || bezirk == 57 || bezirk == 58 || bezirk == 61 || bezirk == 74 || bezirk == 78 || bezirk == 83 || bezirk == 90 || bezirk == 117 || bezirk == 118 || bezirk == 121) document.Formular.Bundesland.selectedIndex = 3;
  if(bezirk == 5 || bezirk == 11 || bezirk == 17 || bezirk == 21 || bezirk == 24 || bezirk == 37 || bezirk == 51 || bezirk == 52 || bezirk == 53 || bezirk == 65 || bezirk == 68 || bezirk == 69 || bezirk == 73 || bezirk == 80 || bezirk == 81 || bezirk == 84 || bezirk == 87 || bezirk == 92 || bezirk == 93) document.Formular.Bundesland.selectedIndex = 4;
  if(bezirk == 27 || bezirk == 71 || bezirk == 72 || bezirk == 77 || bezirk == 82 || bezirk == 120) document.Formular.Bundesland.selectedIndex = 5;
  if(bezirk == 2 || bezirk == 8 || bezirk == 9 || bezirk == 14 || bezirk == 18 || bezirk == 22 || bezirk == 23 || bezirk == 25 || bezirk == 28 || bezirk == 36 || bezirk == 41 || bezirk == 46 || bezirk == 47 || bezirk == 49 || bezirk == 54 || bezirk == 59 || bezirk == 60 || bezirk == 66 || bezirk == 88 || bezirk == 91) document.Formular.Bundesland.selectedIndex = 6;
  if(bezirk == 32 || bezirk == 33 || bezirk == 34 || bezirk == 38 || bezirk == 44 || bezirk == 45 || bezirk == 48 || bezirk == 67 || bezirk == 75) document.Formular.Bundesland.selectedIndex = 7;
  if(bezirk == 4 || bezirk == 6 || bezirk == 10 || bezirk == 15) document.Formular.Bundesland.selectedIndex = 8;
  if(bezirk == 94 || bezirk == 95 || bezirk == 96 || bezirk == 97 || bezirk == 98 || bezirk == 99 || bezirk == 100 || bezirk == 101 || bezirk == 102 || bezirk == 103 || bezirk == 104 || bezirk == 105 || bezirk == 106 || bezirk == 107 || bezirk == 108 || bezirk == 109 || bezirk == 110 || bezirk == 111 || bezirk == 112 || bezirk == 113 || bezirk == 114 || bezirk == 115 || bezirk == 116) document.Formular.Bundesland.selectedIndex = 9;

}

Soweit so gut nun habe ich von jemanden eine Variante bekommen wie es viel einfacher gehen sollte:

Vorhandene deffinitionen:

Bundesland = new Array();

Bundesland['Burgenland'] = new Array();

Bundesland.Burgenland[0] = "Eisenstadt-Stadt";
  Bundesland.Burgenland[1] = "Eisenstadt-Umgebung";
  Bundesland.Burgenland[2] = "Güssing";
  [usw.....]

Bundesland['Kärnten'] = new Array();

Bundesland['Kärnten'][0] = "Feldkirchen";
  Bundesland['Kärnten'][1] = "Hermagor";
  Bundesland['Kärnten'][2] = "Klagenfurt-Land";
  [usw... aus Plaztgründen nicht mehr]

so nun die Variante um es kürzer zu machen:

function chkBezirk(bezirk)
 {
  for(var b in Bundesland)
  for(var i= 0; Bundesland[b][i];i++)
     if(Bundesland[b][i] == bezirk)) return b;
}

es tut sich aber nix:

hab dann im Bezirk Dropdown bei onchange="chkBezirk()"...

Was mache ich falsch?

Was fehlt noch?

Oder wie würde eine andere Variante aussehen um die obige lange Wurst zu kürzen?

Danke
MFG
Markus