Struppi: Schleifenaufbau

Beitrag lesen

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.