Markus: Array richtig auslesen

Beitrag lesen

Hi
nochmals Danke

Will einfach nur dass alle Bezirke immer sortiert im Dropdown erscheinen*gg*

Also, was willst du?

Genau

Du willst alle Bezirke sortiert haben!

Das stimmt!

var tmp = getBezirke().sort();

Es werden alle Bezirke sortiert aber nur am Anfang. wenn man ein im Bundesland was auswählt nicht mehr zb: ganz Österreich..

Mir ist aufgefallen seid die new Option aus den Arrays weg sind steht beim erstmaligen aufrufen in den Bezirken undeffinied.

Hab nur für "alle" und "ganz Österreich" die new Option gelassen:

Hier der derzeitige Code:

var alle = new Option("-- alle --");
var ganz = new Option("-- Ganz Österreich --");
var Bundesland = new Array();

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

Bundesland.Burgenland[0] = "Eisenstadt-Stadt";
  Bundesland.Burgenland[1] = "Eisenstadt-Umgebung";
  Bundesland.Burgenland[2] = "Güssing";
  Bundesland.Burgenland[3] = "Jennersdorf";
  Bundesland.Burgenland[4] = "Mattersburg";
  Bundesland.Burgenland[5] = "Neusiedl am See";
  Bundesland.Burgenland[6] = "Oberpullendorf";
  Bundesland.Burgenland[7] = "Oberwart";
  Bundesland.Burgenland[8] = "Rust Stadt";

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

Bundesland['Kärnten'][0] = "Feldkirchen";
  Bundesland['Kärnten'][1] = "Hermagor";
  Bundesland['Kärnten'][2] = "Klagenfurt-Land";
  Bundesland['Kärnten'][3] = "Klagenfurt-Stadt";
  Bundesland['Kärnten'][4] = "Spittal a. d. Drau";
  Bundesland['Kärnten'][5] = "St. Veit a. d. Glan";
  Bundesland['Kärnten'][6] = "Villach-Land";
  Bundesland['Kärnten'][7] = "Villach-Stadt";
  Bundesland['Kärnten'][8] = "Völkermarkt";
  Bundesland['Kärnten'][9] = "Wolfsberg";
[usw]..

function chkBundesland(form)
{
    var index = form.bundesland.selectedIndex;
    if(index) form.bezirke.length = 1;

var b = form.bundesland.options[index].text;
    if(b == "-- Ganz Österreich --") b = '';

var bezirke = getBezirke(b);
    for(var i = 0; bezirke[i]; i++)
    {
        form.bezirke.options[i + 1] = new Option(bezirke[i]);
    }
}
function getBezirke(b)
{
    if(b) return Bundesland[b];
    var tmp = new Array();
    for(var x in Bundesland)
    for(var i = 0; Bundesland[x][i]; i++) tmp[tmp.length] = Bundesland[x][i];
    return tmp;
}
</script>
</head>

<body>
<form>
<script>
document.write('<select name="bundesland" onchange="chkBundesland(this.form);">');
document.write('<option>' + ganz.text  )
for(var bundesland in Bundesland)
{
    document.write('<option>' + bundesland  )
}
var tmp = getBezirke().sort();
document.write('</select>');
document.write('<select name="bezirke">');
document.write('<option>' + alle.text  )
for(var i = 0; tmp[i]; i++)
{
    document.write('<option>' + tmp[i].text )
}
document.write('</select>');
</script>
</form>
</body>

wo kriegst du alle Bezirke?

Z.b. hier:

var tmp = getBezirke();

(getBezirke() ohne Paramter holt die ganze Liste.)
Was hält dich davon ab dahinter ein sort() zu setzten?

Jetzt hat die eigentliche Sortierung wenn ich sie über
 alert(getBezirke().sort()) aufrufe noch einen Schönheitsfehler bei den Wiener Bezirken:

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

Bundesland.Wien[0] = "Wien I.";
  Bundesland.Wien[1] = "Wien II.";
  Bundesland.Wien[2] = "Wien III.";
  Bundesland.Wien[3] = "Wien IV.";
  Bundesland.Wien[4] = "Wien V.";
  Bundesland.Wien[5] = "Wien VI.";
  Bundesland.Wien[6] = "Wien VII.";
  Bundesland.Wien[7] = "Wien VIII.";
  Bundesland.Wien[8] = "Wien IX.";
  Bundesland.Wien[9] = "Wien X.";
  Bundesland.Wien[10] = "Wien XI.";
  Bundesland.Wien[11] = "Wien XII.";
  Bundesland.Wien[12] = "Wien XIII.";
  Bundesland.Wien[13] = "Wien XIV.";
  Bundesland.Wien[14] = "Wien XV.";
  Bundesland.Wien[15] = "Wien XVI.";
  Bundesland.Wien[16] = "Wien XVII.";
  Bundesland.Wien[17] = "Wien XVIII.";
  Bundesland.Wien[18] = "Wien XIX.";
  Bundesland.Wien[19] = "Wien XX.";
  Bundesland.Wien[20] = "Wien XXI.";
  Bundesland.Wien[21] = "Wien XXII.";
  Bundesland.Wien[22] = "Wien XXIII.";

Wenn ich diese nun sortiere kommen die römischen Zahlen durcheinnander - ist ja auch klar.

Könnte man irgendwie sagen dass er die Wiener Bezirke zusätzlich so sortieren soll wie ursprünglich siehe oben deffiniert?

Wenn ich mich so gut wie du auskennen würde gerne*gg* Bin Leider nicht so ein Genie wie du*g*

Du musst h nur das machen was du möchtest, so eonfach ist programmieren.

Danke

MFG
Markus