romero: Auswahllisten mittels Schleife auslesen!

wunderschönen guten tag,

ich möchte gern 3 auswahllisten mittels einer schleifen auslesen.

die 3 auswahllisten stehen in abhängigkeit,sprich,wenn ich im 1. die auswahl verändere,dann bekomme ich im 2. und 3. neue auswahlmöglichkeiten.

die auswahllisten besitzen folgende namen: bereich1, bereich2, bereich3. die dazugehörigen variablen,welche ich auslese,besitzen ebenfalls diese namen.

bsp: bereich1 hat folgende angaben: wert1, wert2, wert3
bereich2 zu wert1 -> wert1_1, wert1_2 / wert2 -> ... / wert3 -> ...
bereich3 zu wert1_1 -> wert1_1_1 / wert1_2 -> ... / ... immer so weiter,also ne verkettete auswahlliste.

die bereiche 2 & 3 werden nur sichtbar,wenn bereich1 eines der oben genannten werte enthält und selektiert werden.

nun möchte ich aber gern mittels einer schleife herausfinden,in welcher auswahlliste ein bestimmter wert ist.

habe folgendes versucht:

var i = 2;  
  
while ( i <= 4 )  
{  
 if( document.Auswahl.elements[i].options[document.Auswahl.elements[i].selectedIndex].text == "T4L" )  
 {  
  alert( "das klappt: T4L steht an " + i + ". Stelle " );  
  
 };  
 i++;  
};

wenn ich nun in der 1. auswahlliste t4l selektiere,dann bringt er mit den alert-ausdruck,aber auch gleichzeitig das "document.Auswahl.elements[i].options[document.Auswahl.elements[i].selectedIndex].text" null oder kein object sei.wenn ich aber nun in meinem 2. bereich t4l eintrage,dann passiert gar nix. was mache ich falsch?

irgendwie spricht er den 2. und 3. bereich nicht an.der html-teil sieht so aus:

<tr>  
<td width=55 align="center">Bereich:</td>  
<td width=95><label id="SektionBereich1" for="Bereich1"></label>  
 <select id="Bereich1" name="Bereich1" onClick="Selektierung()">  
  <option value="--">Bitte wählen:</option>  
 </select></td>  
<td width=40>  
 <input type="text" name="Text1" value="" size="1" maxlength="3"></input></td>  
<td width=100 id="Fehlerausgabe1" align="center"></td>  
<td width=10></td>  
</tr>  
  
<tr height=30>  
<td width=10></td>  
<td colspan=5 rowspan=6 id="Prüfung" valign="bottom"></td>  
<td width=100></td>  
<td width=55></td>  
<td width=60><label id="SektionBereich2" for="Bereich2"></label>  
 <select id="Bereich2" name="Bereich2" onClick="Selektierung()" style="display: none;">  
  <option value="--">Bitte wählen:</option>  
 </select></td>  
<td width=40>  
 <input type="text" id="Text2" name="Text2" value="" size="1" maxlength="3" style="display: none;"></input></td>  
<td width=100 id="Fehlerausgabe2"></td>  
<td width=10></td>  
</tr>  
  
<tr height=30>  
<td width=10></td>  
<td width=100></td>  
<td width=55></td>  
<td width=60><label id="SektionBereich3" for="Bereich3"></label>  
 <select id="Bereich3" name="Bereich3" onClick="Selektierung()" style="display: none;">  
  <option value="--">Bitte wählen:</option>  
 </select></td>  
<td width=40>  
<input type="text" id="Text3" name="Text3" value="" size="1" maxlength="3" style="display: none;"></input></td>  
<td width=100 id="Fehlerausgabe3"></td>  
<td width=10></td></tr>

gibt es da irgendwie ne besseren lösungsansatz als meinen?

kann es auch über if-else-abfragen machen aber da ist der auffand zu groß bzw. zu umständlich und langwierig.

oder gibt es ne möglichkeit die einzelnen variablen bereich1 bis bereich3 in der form von (bereich + i) zu schreiben?also das (bereich + i) dann gleich mit bereich1 ist,wenn i = 1 ist.das glaub ich geht nicht oder?

lg romero

  1. Hi,

    var i = 2;

    while ( i <= 4 )
    {
    if( document.Auswahl.elements[i].options[document.Auswahl.elements[i].selectedIndex].text == "T4L" )
    {
      alert( "das klappt: T4L steht an " + i + ". Stelle " );

    };
    i++;
    };

      
    Diese Schleife wird mit den Werten 2, 3 und 4 für i durchlaufen.  
      
    
    > wenn ich nun in der 1. auswahlliste t4l selektiere,dann bringt er mit den alert-ausdruck,aber auch gleichzeitig das "document.Auswahl.elements[i].options[document.Auswahl.elements[i].selectedIndex].text" null oder kein object sei.wenn ich aber nun in meinem 2. bereich t4l eintrage,dann passiert gar nix. was mache ich falsch?  
      
    Es gibt vermutlich gar nicht so viele Elemente in deinem Formular?  
      
    
    > gibt es da irgendwie ne besseren lösungsansatz als meinen?  
      
    Was genau du eigentlich erreichen willst, ist mir immer noch nicht klar.  
      
    
    > oder gibt es ne möglichkeit die einzelnen variablen bereich1 bis bereich3 in der form von (bereich + i) zu schreiben?also das (bereich + i) dann gleich mit bereich1 ist,wenn i = 1 ist.das glaub ich geht nicht oder?  
      
    Auch hier wieder - keine Ahnung, was du wissen willst.  
      
    Wo du die derart benannten Variablen in deinem Code verwendest, hast du auch nicht gezeigt.  
      
    MfG ChrisB  
      
    
    -- 
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    
    1. die elements sind doch die einzelnen z.b. select's die ich hab oder?davon hab ich insgesamt 5.bei den ersten 3en funktionert es ja.aber die anderen nicht.der html-teil sieht wie oben beschrieben aus.

      was ich erreichen will?nun ja.ich habe hinter den bereichen noch einen input type=text stehen,welche zahlen enthalten.will mittels der schleife rausfinden in welchem bereich (also 1,2 oder 3) ein bestimmter wert vorkommt und zu gleich den entsprechenden input type=text-wert (also zahl) zu ordnern.

      sprich,wenn die schleife ermittelt,das im elements[3] (entspricht bereich2) der wert t4l steht,dann soll er auch den input type=text-wert da zu ordnen.wenn bei elements[4] dieser wert zu finden ist,dann eben halt da.

      die variablen habe ich in meinem script unter der verwendung,das ich mittels diesen variablen bestimmte matialstücklisten erstelle.je nachdem was man da auswählt.

      nur bei diesem problem (das zu erklären würde jetzt den rahmen sprängen),würde ich ne schleife bevorzugen.ich kann es auch mittels if-else-abfragen machen,aber zu viel text heißt auch wiederrum zu viele fehler können entstehen.

      in welcher reihenfolge nummeriert er denn die elements durch?weil ich habe in einer spalte 3 select-felder.unter dem letzten select-feld der 1. spalte befinden sich das 4. select-feld und unter diesem befindet sich in einer weiteren spalte das 5. select-feld.das 4. und 5. select-feld sind so lange disabled bis jemand diesen bestimmten wert im 3. select-feld auswählt.dann werden erst die 2 letzten sichtbar.

      die namen sind ebenfalls nicht doppelt. also z.b. durch nummern unterschiedlich.

      was also mach ich falsch,das er die anderen elements nicht anspricht?
      bzw. gibt es dafür ne andere lösung als meine?

      lg romero

      1. Hi,

        die elements sind doch die einzelnen z.b. select's die ich hab oder?

        elements umfasst alle Formularelemente des jeweiligen Formulars.

        was ich erreichen will?nun ja.

        Versuche bitte zunächst mal, deine Space-Taste zu erreichen. Und benutze sie dann nach Satzzeichen, Danke.

        sprich,wenn die schleife ermittelt,das im elements[3] (entspricht bereich2) der wert t4l steht,dann soll er auch den input type=text-wert da zu ordnen.wenn bei elements[4] dieser wert zu finden ist,dann eben halt da.

        Und was verstehst du jetzt unter „zuordnen“?

        die variablen habe ich in meinem script unter der verwendung,das ich mittels diesen variablen bestimmte matialstücklisten erstelle.

        Bemühe dich bitte mal, Sätze zu formulieren, die in Deutsch halbwegs einen Sinn ergeben.

        in welcher reihenfolge nummeriert er denn die elements durch?

        Das macht „er“ in der Reihenfolge, in der sie im Quelltext stehen, bzw. dann anschliessend im DOM landen.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. was ich erreichen will?nun ja.

          Versuche bitte zunächst mal, deine Space-Taste zu erreichen. Und benutze sie dann nach Satzzeichen, Danke.

          wenn ich schnell schreibe, achte ich nicht auf sowas. und ist glaub auch nicht so wichtig oder?

          sprich,wenn die schleife ermittelt,das im elements[3] (entspricht bereich2) der wert t4l steht,dann soll er auch den input type=text-wert da zu ordnen.wenn bei elements[4] dieser wert zu finden ist,dann eben halt da.

          Und was verstehst du jetzt unter „zuordnen“?

          zuordnen heißt, dass wenn im bereich1 der wert t4l selektiert worden ist, das er dann auch den wert des input type=text-feldes zuordnet.

          sprich element[2] mit name="bereich1" hat den dazugehörigen input type=text name="text1", usw.

          die variablen habe ich in meinem script unter der verwendung,das ich mittels diesen variablen bestimmte matialstücklisten erstelle.

          Bemühe dich bitte mal, Sätze zu formulieren, die in Deutsch halbwegs einen Sinn ergeben.

          sorry aber für mich ergibt es einen sinn. aber egal.

          also wenn er alle elemente nimmt die da sind, sprich auch die text-eingabe-felder, dann ist klar das er da ne fehlermeldung bringt. wie kann ich im sagen, dass er bei var i = 2 jeden 2 formularelement nehmen soll?

          er soll jeden bereich ( also bereich1 bis bereich3) auf t4l durchsuchen ( sofern sie selektiert sind). dann soll er ausgeben, in welchem bereich er den wert gefunden hat und dann soll er das ganze als var STL_Tür "speichern".