Markus: Schleifenaufbau

Hi Leute möchte eine Schleife aufbauen habe folgenden Code:

var bundesland =document.Formular.Bundesland.selectedIndex;

B1 = new Option("Amstetten");
 B2 = new Option("Bad Aussee");
 B3 = new Option("Baden");
 B4 = new Option("Bludenz");

// geht bis B120 =....

document.Formular.Bezirk.options[document.Formular.Bezirk.length] = Bxxx;

diese Zeile sollte jetzt mit allen 120 Bezirken ausgeführt werden (dh. von B1 bis B120)

Wie baue ich das in eine Schleife? Hab nachgelesen und glaube eine for schleife würde sich dafür eignen da das Ende bei B120 ja fest steht..

wer kann mir da bitte beim Aufbau helfen?

Danke
MFG
Markus

  1. Hi Leute möchte eine Schleife aufbauen habe folgenden Code:

    var bundesland =document.Formular.Bundesland.selectedIndex;

    B1 = new Option("Amstetten");
     B2 = new Option("Bad Aussee");
     B3 = new Option("Baden");
     B4 = new Option("Bludenz");

    // geht bis B120 =....

    Dazu solltest du ein Array verwenden, genau dafür sind sie da.

    var B = new Array();
    B[B.length] = new Option("Amstetten");
    B[B.length] = new Option("Bad Aussee");
    B[B.length] = new Option("Baden");
    B[B.length] = new Option("Bludenz");

    Dann ist es auch unerheblich wieviel da sind, da du immer mit B.length weiss wieviele vorhanden sind.

    document.Formular.Bezirk.options[document.Formular.Bezirk.length] = Bxxx;

    diese Zeile sollte jetzt mit allen 120 Bezirken ausgeführt werden (dh. von B1 bis B120)

    Genau, eine Schleife.

    for(var i=0; B[i]; i++)
    {form.option[i] = B[i];}

    Weitere infos zu Arrays bei selfhtml.

    struppi.

    1. Hi

      Aber wie mach ich das dann Bundesländerabhängig..

      habs bis jetzt so und läuft:
      if(bundesland == 5)
        {
        document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B27;
        document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B71;
        document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B72;
        document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B77;
        document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B82;
        document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B120;
        }

      var B = new Array();
      B[B.length] = new Option("Amstetten");
      B[B.length] = new Option("Bad Aussee");
      B[B.length] = new Option("Baden");
      B[B.length] = new Option("Bludenz");

      Dann ist es auch unerheblich wieviel da sind, da du immer mit B.length weiss wieviele vorhanden sind.

      Dann könnte ich ja die einzelnen B nicht mehr direkt ansprechen wegen dem Bundesland meine ich...

      ist das nicht zuwenig nur "(form.option[i] = B[i];}

      Danke

      MFG
      Markus

      1. Hi

        Aber wie mach ich das dann Bundesländerabhängig..

        habs bis jetzt so und läuft:
        if(bundesland == 5)
          {
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B27;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B71;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B72;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B77;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B82;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B120;
          }

        Das raffe ich wie schon das letzte mal nicht.

        var B = new Array();
        B[B.length] = new Option("Amstetten");
        B[B.length] = new Option("Bad Aussee");
        B[B.length] = new Option("Baden");
        B[B.length] = new Option("Bludenz");

        Dann ist es auch unerheblich wieviel da sind, da du immer mit B.length weiss wieviele vorhanden sind.

        Dann könnte ich ja die einzelnen B nicht mehr direkt ansprechen wegen dem Bundesland meine ich...

        auch das verstehe ich nicht. Du kannst ein Array doch viel leichter ansprechen als eine feste Variabel.
        b120 ist wesentlich unflexibler als b[120]

        ist das nicht zuwenig nur "(form.option[i] = B[i];}

        War nur als Beispiel gedacht.

        Irgendwie versteh ich nach wie vor nicht was du machen willst oder du weist nicht was man mit Arrays machen kann.

        Struppi.

        1. HI

          Danke dass du dich mit meinem Problem beschäftigst.

          Brauche das wenn ich Bundesland Dropdown ein Bundesland auswähle (im Beispiel Bundesland 5) dann sollten die dazugehörigen Bezirke im Bezirkdropdown aufgelistet werden (B27, B71, B72, B77, B82, B120).

          habs bis jetzt so und läuft:

          if(bundesland == 5)
            {
            document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B27;
            document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B71;
            document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B72;
            document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B77;
            document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B82;
            document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B120;

          var B = new Array();
          B[B.length] = new Option("Amstetten");
          B[B.length] = new Option("Bad Aussee");
          B[B.length] = new Option("Baden");
          B[B.length] = new Option("Bludenz");

          Leider kenn ich mich mit Arrays sehr schlecht aus..

          vl müßte ich ein 2 Dimensoniales Array aufbauen..

          wo ich darin meine Bundesländer auch zuordnen kann...

          Wie würde es im obigen Beispiel aussehen? Bzw wie frage ich es dann ab ebenfalls mit ner Schleife?

          auch das verstehe ich nicht. Du kannst ein Array doch viel leichter ansprechen als eine feste Variabel.
          b120 ist wesentlich unflexibler als b[120]

          Das funkt übrigens jetzt:

          ist das nicht zuwenig nur "(form.option[i] = B[i];}

          War nur als Beispiel gedacht.

          Hoffe es ist nun verständlicher?

          Danke
          MFG
          Markus

          1. Habe ich so richtig deffiniert:

            Bundesland = new Array();

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

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

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

            Bundesland.Vorarlberg[0] = 'Bludenz';
              Bundesland.Vorarlberg[1] = 'Bregenz';
              Bundesland.Vorarlberg[2] = 'Dornbirn';
              Bundesland.Vorarlberg[3] = 'Feldkirch';

            oder muß die Trennung der Bundesländer anders sein?

            MFG
            Markus

            1. Habe ich so richtig deffiniert:

              Bundesland = new Array();

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

              Bundesland.Bugendland[0] = 'Eisenstadt-Stadt';

              Da ist ein Tippfehler drin und du willst ja die Options haben, ich hab die Strings nur mal als Beispiel genommen.

              Bundesland.Burgendland[1] = new Option(....);

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

              Bundesland.Vorarlberg[0] = 'Bludenz';
                Bundesland.Vorarlberg[1] = 'Bregenz';
                Bundesland.Vorarlberg[2] = 'Dornbirn';
                Bundesland.Vorarlberg[3] = 'Feldkirch';

              Genau so.

              Und damit kannst dann bei dem Aufruf der Funktion, die dein Select Feld füllt direkt auf die Indizes zugreifen.

              ...

              bundesland = 'ein String der den Name des bundeslandes enthält'

              bundesland = 'Voralberg' oder aus dem Formular
              bundesland = formular.bundesland.option[formular.bundesland.selectedIndex].value;

              (Das ist nur beispielhaft).

              var bezirke = Bundesland[bundesland];

              Bundesland ist das Array
              bundesland der string

              Da sollte man sich noch über die Bennenung gedanken machen.

              for(var i = 0; i < bezirke.length;i++)

              Die nachfolgende Schleife iteriert (ohje, wie heißt das auf deutsch, durchläuft oder so) alle indizes des zweiten Index von Bundesland[], den ich in bezirk abgelegt habe zwecks übersichtlichkeit.
              {
                 formular.bezirke.options[....] = bezirk[i];
              }
              so in etwa.

              Struppi.

              1. HI

                Danke nochmals..

                so jetzt kommen wir der Sache dank deiner Hilfe schon näher.

                schaut jetzt so aus:

                Bundesland = new Array();

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

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

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

                Bundesland.Vorarlberg[0] = new Option("Bludenz");
                  Bundesland.Vorarlberg[1] = new Option("Bregenz");
                  Bundesland.Vorarlberg[2] = new Option("Dornbirn");
                  Bundesland.Vorarlberg[3] = new Option("Feldkirch");

                Das binde ich erst später ein:

                bundesland = 'ein String der den Name des bundeslandes enthält'

                bundesland = 'Voralberg' oder aus dem Formular
                bundesland = formular.bundesland.option[formular.bundesland.selectedIndex].value;

                (Das ist nur beispielhaft).

                Sieht zur Probe so aus:

                var bezirke = Bundesland['Vorarlberg'];

                var bezirke = Bundesland[bundesland];

                Die Schleife hab ich auch so:

                for(var i = 0; i < bezirke.length;i++)

                Was gehört jetzt da bei den options[....] rein??

                Früher hab ich ja das reingeschrieben(geht jetzt nicht mehr):
                [document.Formular.Bezirk.length]

                {
                   formular.bezirke.options[....] = bezirk[i];
                }

                Danke

                MFG
                Markus

                1. Hab jetzt mal das [i] eingefügt jetzt gehts mit den entsprechenden 4 Bezirken von Vorarlberg.

                  Wie kann ich nun was ich vorher im Bezirkdropdown hatte mit Index[0] "Alle Bezirke" was auch ausgeählt sein soll wieder einfügen..

                  Hatte es früher nämlich so gelöst..

                  if(bundesland > 0)document.Formular.Bezirk.length = 1

                  // Wenn ein Bundesland ausgewählt wurde dann sollte das Bezirkdropdown bis auf den ersten Wert("Alle Bezirke") gelöscht werden.

                  Nur nach der neuen Variante geht mir das "Alle Bezirke" ab.

                  Wie baue ich das nun ein?

                  Muß ich das "Alle Bezirke" für jedes Bundesland extra deffinieren?

                  Oder wie gehe ich das an?

                  Danke
                  MFG
                  Markus

                  Was gehört jetzt da bei den options[....] rein??

                  Früher hab ich ja das reingeschrieben(geht jetzt nicht mehr):
                  [document.Formular.Bezirk.length]

                  {
                     formular.bezirke.options[....] = bezirk[i];
                  }

                  Danke

                  MFG
                  Markus

                  1. Hab inzwischen wieder rumprobiert und das [i+1] eingefügt also:

                    for(var i = 0; i < bezirke.length; i++) document.Formular.Bezirk.options[i+1] = bezirke[i];

                    Ist das korrekt? Denn wenn ich das reinschreibe steht wieder am Anfang "Alle Bezirke" drinnen.

                    Wenn ja richtig ist was bedeutedt das in dem Fall genau [i+1] damit "Alle Bezirke" da steht.

                    Und nun tut sich ja wieder meine Frage auf die ich dir zu Beginn eigentlich gestellt habe*gg*

                    Wie komme ich jetzt an alle Bezirke ran? (Also wirklich Alle)

                    hast mir ja früher das vorgeschlagen:

                    var B = new Array();
                    B[B.length] = new Option("Amstetten");
                    B[B.length] = new Option("Bad Aussee");
                    B[B.length] = new Option("Baden");
                    B[B.length] = new Option("Bludenz");

                    for(var i=0; B[i]; i++)
                    alert(i);//{document.Formular.Bezirk.options[i] = B[i];}

                    was auch funktioniert hat.

                    Aber wie gehts jetzt mit dem neuen Array das wir aufgebaut haben?

                    Danke

                    MFG
                    Markus

                    1. Und nun tut sich ja wieder meine Frage auf die ich dir zu Beginn eigentlich gestellt habe*gg*

                      Wie komme ich jetzt an alle Bezirke ran? (Also wirklich Alle)

                      hast mir ja früher das vorgeschlagen:

                      var B = new Array();
                      B[B.length] = new Option("Amstetten");
                      B[B.length] = new Option("Bad Aussee");
                      B[B.length] = new Option("Baden");
                      B[B.length] = new Option("Bludenz");

                      for(var i=0; B[i]; i++)
                      alert(i);//{document.Formular.Bezirk.options[i] = B[i];}

                      was auch funktioniert hat.

                      Aber wie gehts jetzt mit dem neuen Array das wir aufgebaut haben?

                      Dazu brauchst du jetzt zwei Schleifen.

                      for(var bundesland in Bundesland)
                      {
                          for(var i = 0; Bundesland[bundesland].length; i++)
                          {
                               alert(bundesland[i]);
                          }
                      }

                      assoziative Arrays haben keine 'length' d.h. du musst die for in Variante nehmen.

                      Struppi.

                      1. Ok dann mach ich es jetzt so:

                        if(bundesland > 0)document.Formular.Bezirk.length = 1;

                        Bundesland = new Array();

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

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

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

                        Bundesland.Vorarlberg[0] = new Option("Bludenz");
                          Bundesland.Vorarlberg[1] = new Option("Bregenz");
                          Bundesland.Vorarlberg[2] = new Option("Dornbirn");
                          Bundesland.Vorarlberg[3] = new Option("Feldkirch");

                        var bezirke = Bundesland['Vorarlberg']; // zum Test mal Vorarlberg

                        for(var i = 0; i < bezirke.length; i++) document.Formular.Bezirk.options[i+1] = bezirke[i];

                        so jetzt hab ich meine einzelnen Bezirke zu den Bundesländern und das "Alle Bezirke" immer davor.

                        Aber wie spreche ich nun "Alle Bezirke" an:??

                        mit:

                        for(var bundesland in Bundesland)
                          {
                          for(var i = 0; Bundesland[bundesland].length; i++)
                          {
                          alert(bundesland[i]);

                        dann hätte ich jetzt schon 3 for??

                        wie und wo muß ich jetzt noch was einbauen damit das auch noch geht..

                        danke
                        MFG
                        Markus

                        1. Aber wie spreche ich nun "Alle Bezirke" an:??

                          mit:

                          for(var bundesland in Bundesland)
                            {
                            for(var i = 0; Bundesland[bundesland].length; i++)
                            {
                            alert(bundesland[i]);

                          dann hätte ich jetzt schon 3 for??

                          Yeap.

                          wie und wo muß ich jetzt noch was einbauen damit das auch noch geht..

                          Du solltest mal langsam, eine testfassung online stellen, da wir hier immer nur einen Schritt nach vorne kommen und ansonsten nur raten können. Oder du versuchst dich ein wenig mit Arrays und programmieren anzufreunden.

                          In dem obigen Falle bietet es sich nämlich z.b. an ein Funktion zu schreiben:

                          /* 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;
                          }

                          usw.
                          Du hast mittlerweile schon fast eine Anwendung, wobei dir klar sein muss, dass nicht alle User, 5-15% dürften es sein, JS an haben. Und du musst dich aufgrund dessen mit Programiertechniken auseinenadersetzen.

                          Struppi.

                          1. 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;

                            Bundesland = new Array();

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

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

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

                            Bundesland.Vorarlberg[0] = new Option("Bludenz");
                              Bundesland.Vorarlberg[1] = new Option("Bregenz");
                              Bundesland.Vorarlberg[2] = new Option("Dornbirn");
                              Bundesland.Vorarlberg[3] = new Option("Feldkirch");

                            bundesland = document.Formular.Bundesland.options[document.Formular.Bundesland.selectedIndex].text;

                            var bezirke = Bundesland[bundesland];

                            //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*

                            Was bewirkt genau (var bundesland in Bundesland) ???

                            Hast du damit gemeint das ich das anstatt der for in Schlefe nehmen soll?:

                            /* 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]

                            Vl können wir jetzt das Problem dank deiner großartigen Hilfe abschließen.

                            Danke im voraus

                            MFG
                            Markus

                            1. 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.

                              1. Hi Struppi!

                                Steh jetzt leider ganz auf der Leitung*g*

                                das wird bei einem onChange beim Bundesland Dropdown aufgerufen..

                                Ich hoffe mal, dass steht in einer Funktin, die von dem Formular aufgerufen wird und das nachfolgende wird nur einmal beim Seitenaufruf ausgeführt.

                                //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*

                                für ein assoziatives Array musst du, da es keine Eigenschaft length hat.

                                Mit dieser funktion fange ich leider gar nichts an...

                                bin ja bereits in einer funktion drinnen ( function chkBundesland) das beim onchange des Bundesland Dropdown aufgerufen wird... und auch für alle Bundesländer inzwischen funktioniert...

                                nur eben eben dass alle Bezirke aufgelistet werden haut noch nicht hin..

                                Beispiel gibt im Bundesland Dropdown 9 Bundesländer + ganz Österreich(ist schon ausgewählt als standard)

                                Nun nehmen wir an wir wählen Vorarlberg aus:

                                es erscheint nun mit unserem bisherigen script im Bezirk Dropdown "Alle" und die 4 Bezirke die zu Vorarlberg gehören..

                                Was noch nicht geht:
                                1.

                                Wenn ich auf "ganz Österreich" sollten wieder alle Bezirke erscheinen.

                                2.

                                Wenn ich auf "Alle" (im Bezirk Dropdown) klicke sollten wieder alle Bezirke erscheinen.

                                Wo sollte die untere Funktion eingebaut werden? Bzw bin ich ja schon in Funktionen drinnen?

                                Betrifft diese Funktion jetzt "Alle" (Bezirke) oder "ganz Österreich" (im Bundesland Dropdown).

                                Möchte ja einfach nur alle Bezirke wieder drinnen haben*ggg* aber wie?

                                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;
                                }

                                Leider noch nicht*gg* kenn inzwischen die selfhtml seiten schon fast auswendig*gg*

                                So, ich hoffe mal das du damit fertig wirst ;-)

                                Bitte nochmal dass du mir hilfst bin scheinbar zu blöd um es richtig einzubauen...

                                Danke

                                MFG
                                Markus

                  2. Nur nach der neuen Variante geht mir das "Alle Bezirke" ab.

                    Wie baue ich das nun ein?

                    Muß ich das "Alle Bezirke" für jedes Bundesland extra deffinieren?

                    Oder wie gehe ich das an?

                    Wenn ich das richtig verstehe, würde ich einfach ein globales:
                    alle = new Option('alle');

                    definieren und dies zusätzlich zur den Bezirken noch einfügen.

                    Struppi.

                    1. Aber das "Alle" steht ja ursprünglich ja schon im Dropdown drinnen ich meine bevor ein Bundesland ausgewäht ist..

                      Was ist mit der vorrigen [i+1] Variante im letzten Beitrag? Haut das nicht hin?

                      Wenn ich das globale "alle" brauche wo wird das genau eingebaut?

                      Wenn ich das richtig verstehe, würde ich einfach ein globales:
                      alle = new Option('alle');

                      definieren und dies zusätzlich zur den Bezirken noch einfügen.

                      Bundesland = new Array();

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

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

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

                      Bundesland.Vorarlberg[0] = new Option("Bludenz");
                        Bundesland.Vorarlberg[1] = new Option("Bregenz");
                        Bundesland.Vorarlberg[2] = new Option("Dornbirn");
                        Bundesland.Vorarlberg[3] = new Option("Feldkirch");

                      wo soll da das alle rein?

                      Danke
                      MFG
                      Markus

                      1. Bundesland['Vorarlberg'] = new Array();

                        Bundesland.Vorarlberg[0] = new Option("Bludenz");
                          Bundesland.Vorarlberg[1] = new Option("Bregenz");
                          Bundesland.Vorarlberg[2] = new Option("Dornbirn");
                          Bundesland.Vorarlberg[3] = new Option("Feldkirch");

                        wo soll da das alle rein?

                        Hier:

                        alle = new Option('alle');

                        und dann zusätzlich (vor) der Schleife
                        formular.bezirke.options[....] = alle;

                        Struppi.

                        1. Verstehe nicht was du mit options[....] meinst?

                          was soll ich da reinschreiben?

                          Bzw ist meine Variante die ich vorhin geschrieben habe mit options[i+1] falsch um an das Alle zu kommen.

                          Denn wenn ich das reinschreibe kommt ja das Alle..

                          und dann zusätzlich (vor) der Schleife
                          formular.bezirke.options[....] = alle;

                          MFG
                          Markus

                          1. Verstehe nicht was du mit options[....] meinst?

                            was soll ich da reinschreiben?

                            Bzw ist meine Variante die ich vorhin geschrieben habe mit options[i+1] falsch um an das Alle zu kommen.

                            Denn wenn ich das reinschreibe kommt ja das Alle..

                            und dann zusätzlich (vor) der Schleife
                            formular.bezirke.options[....] = alle;

                            Du wolltest doch alle löschen mit:
                            formular.bezirke.length = 1;

                            und dann die neuen zufügen mit:
                            formular.bezirke.options[formular.bezirke.length] = alle;

                            Aber du hast recht, das ist ja gar nicht nötig, da das nullte dadurch eh immer gleich ist. also ist deine Variante schon richtig.

                            Struppi.

                            1. Hab am Ende weitergeschrieben.

                              Danke
                              MFG
                              Markus

      2. Hi

        Aber wie mach ich das dann Bundesländerabhängig..

        habs bis jetzt so und läuft:
        if(bundesland == 5)
          {
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B27;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B71;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B72;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B77;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B82;
          document.Formular.Bezirk.options[document.Formular.Bezirk.length] = B120;
          }

        Beim durchlesen kam mir, dass du vieleicht zweidiemnsonale Array brauchst.

        B = new Array();

        B['bundeslandXYZ'] = new Array();
        B['bundeslandXYZ'][0] = 'bezrik 1';
        B['bundeslandXYZ'][0] = 'bezrik 2';
        B['bundeslandXYZ'][0] = 'bezrik 3';
        ....
        (Das ist übrigens ein assoziatives Array [hofentlich richtig geschrieben] der Index kann auch ein String sein. Du kannst das sogar so ansprechen:
        Bundesland = new Array();
        Bundesland['steiermark'] = new Array();

        Bundesland.steiermark[0] = 'bezirk 1';
        Bundesland.steiermark[1] = 'bezirk 2';
        )

        und dein obiger Aufruf wird zu sowas:

        var bezirke = B[bundesland];

        for(var i = 0; i < bezirke.length; i++) form.option[....] = bezirke[i];

        Dann hast du gar keine Sorgen mehr, hoffe ich mal, wenn ich das richitg verstanden habe.

        Struppi.

        1. Hi

          Ich glaub so könnts irgendwie klappen aber habs noch nicht ganz verstanden.

          Beim durchlesen kam mir, dass du vieleicht zweidiemnsonale Array brauchst.

          Ist das untere Beispiel nur für die Bezirke von einem Bundesland gedacht und für was stehen die [0] oder kann ich da alle Bundesländer und Bezirke durchmischen?

          B = new Array();

          B['bundeslandXYZ'] = new Array();
          B['bundeslandXYZ'][0] = 'bezrik 1';
          B['bundeslandXYZ'][0] = 'bezrik 2';
          B['bundeslandXYZ'][0] = 'bezrik 3';

          B['Steiermark'] = new Array();
          B['bundeslandXYZ'][0] = 'bezrik 1';
          B['bundeslandXYZ'][0] = 'bezrik 2';
          B['bundeslandXYZ'][0] = 'bezrik 3'

          B1 = new Option("Amstetten"); == Bundesland2
           B2 = new Option("Bad Aussee"); == Bundesland5
           B3 = new Option("Baden"); == Bundesland2
           B4 = new Option("Bludenz"); == Bundesland8

          Wo bleiben da jetzt meine new Option()?

          das Bezirkdropdown wird ja immer gelöscht wenn ein Bundesland ausgewählt wird?

          Ist das jetzt das gleiche wie oben mit Bundeslandxyz?
          Bzw wie steht das mit deinem von vorher genannten:

          var B = new Array();
           B[B.length] = new Option("Amstetten");

          im zusammenhang?

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

          Bundesland.steiermark[0] = 'bezirk 1';
          Bundesland.steiermark[1] = 'bezirk 2';
          )

          und dein obiger Aufruf wird zu sowas:

          soweit bin ich noch nicht mit dem verstehen*gg*

          var bezirke = B[bundesland];

          for(var i = 0; i < bezirke.length; i++) form.option[....] = bezirke[i];

          Dann hast du gar keine Sorgen mehr, hoffe ich mal, wenn ich das richitg verstanden habe.

          Bin jetzt auch ein wenig verwirrt..

          Also ich fange mal an die Bundesländer zu deffinieren:

          Aber wie genau mit den new Arrays? verschiedenen Bundesländer und Bezirke in einer Wurst? oder Bundesland für Bundesland?

          Danke

          MFG
          Markus