Hi Struppi!
Danke dass du mir soweit geholfen hast.. Bis jetzt hab ich es so aufgebaut:(mit dem for in haut es nicht hin bzw. alle Bezirke).
var bezirk =document.Formular.Bezirk.selectedIndex;
var bundesland =document.Formular.Bundesland.selectedIndex;if(bundesland > 0)document.Formular.Bezirk.length = 1;
Ich hoffe mal, dass steht in einer Funktin, die von dem Formular aufgerufen wird und das nachfolgende wird nur einmal beim Seitenaufruf ausgeführt.
Bundesland = new Array();
Bundesland['Burgenland'] = new Array();
Bundesland.Burgenland[0] = new Option("Eisenstadt-Stadt");
Bundesland.Burgenland[1] = new Option("Eisenstadt-Umgebung");
[..]
Bundesland['Vorarlberg'] = new Array();
var bezirke = Bundesland[bundesland];
bezirke beinhaltet das Array, das zu bndesland gehört.
ist bundesland = 'Voralberg'
bezirke[0] = new Option("Bludenz");
bezirke[1] = new Option("Bregenz");
bezirke[2] = new Option("Dornbirn");
bezirke[3] = new Option("Feldkirch");
//for(var bundesland in Bundesland)
//{
//for(var i = 0; Bundesland[bundesland].length; i++)
//{
//alert(bundesland[i]);for(var i = 0; i < bezirke.length; i++) document.Formular.Bezirk.options[i+1] = bezirke[i];
Wenn ich an dieser Stelle das for in einbaue ohne die // dann bekomme ich undeffinied als fehlermeldung und lande in einer Endlosschleife... die nicht mehr aufhört*gg*
Ich vermute mal (hab grad keine Lust da nochmal reinzugucken) das ich das obige nicht geschrieben habe.
Es muss heissen:
for(var i = 0; Bundesland[i]; i++)
^^^^ Das ist entscheidend.
Was bewirkt genau (var bundesland in Bundesland) ???
Es zeigt dir alle eigenschaften eines Objektes an (siehe selfhtml).
z.b. for(var x in window) alert(x);
gibt dir alle Eigenschaften des Objektes windows an.
Hast du damit gemeint das ich das anstatt der for in Schlefe nehmen soll?:
für ein assoziatives Array musst du, da es keine Eigenschaft length hat.
/* getBezirk( [string] )*/
/* Rückgabe der Bezirke eine bundeslandes
oder aller wenn kein Bundesland angegeben wird
*/
function getBezirke(b)
{
if(b) Bundesland[b];
var tmp = new Array();
for(var b in Bundesland)
for(var i = 0; Bundesland[i]; i++) tmp[tmp.length] = Bundesland[i];
return tmp;
}wenn ich das anstatt der for Schleife nehmen soll bitte ich um nähere Erklärung von:
getBezirk ([string]) // Was soll ich für string reinschreiben?
function getBezirke(b) // absichtlich Bezirke? statt Bezirk? und für was steht (b) bzw [b]
Der String beinhaltet entweder gar nichts, dann erhälst du alle Bezirke oder ein bundesland z.b. 'Voralberg'
Bezirke, weil du ja mehrere Bezirke pro bundesland hast.
b ist ein Platzhalter innerhalb der Funktion steht darin der PArramter zu Verfügung:
function test(b)
{
alert('Der Parameter ist :' + b);
}
test('Hallo !');
So, ich hoffe mal das du damit fertig wirst ;-)
Bis dann, Struppi.