khm: Problem mit if ... else ... if

Hallo,

kann mir jemand sagen, warum das folgende Script nicht funktioniert?

  
function update()  
{  
var idx_s=document.forms.varianten2.sizes.selectedIndex;  
alert("update");  
document.forms.varianten2.cups.options.disabled=true;  
document.forms.varianten2.colors.options.disabled=true;  
while (document.forms.varianten2.cups.options.length > 0)  
  {document.forms.varianten2.cups.options[0] = null;}  
document.forms.varianten2.colors.options.disabled=true;  
while (document.forms.varianten2.colors.options.length > 0)  
  {document.forms.varianten2.colors.options[0] = null;}  
if (idx_s<6)  
  {  
    document.forms.varianten2.cups.options[0]=new Option("Cup: A");  
    document.forms.varianten2.cups.options[0].value="Cup: A";  
    document.forms.varianten2.cups.options[1]=new Option("Cup: B");  
    document.forms.varianten2.cups.options[1].value="Cup: B";  
    document.forms.varianten2.cups.options[2]=new Option("Cup: C");  
    document.forms.varianten2.cups.options[2].value="Cup: C";  
    document.forms.varianten2.cups.options[3]=new Option("Cup: D");  
    document.forms.varianten2.cups.options[3].value="Cup: D";  
    document.forms.varianten2.cups.options[4]=new Option("Cup: E");  
    document.forms.varianten2.cups.options[4].value="Cup: E";  
  } else  
  {  
    document.forms.varianten2.cups.options[0]=new Option("Cup: A");  
    document.forms.varianten2.cups.options[0].value="Cup: A";  
    document.forms.varianten2.cups.options[1]=new Option("Cup: B");  
    document.forms.varianten2.cups.options[1].value="Cup: B";  
    document.forms.varianten2.cups.options[2]=new Option("Cup: C");  
    document.forms.varianten2.cups.options[2].value="Cup: C";  
  }  
if (idx_s<7)  
 {  
    document.forms.varianten2.colors.options[0]=new Option("Farbe: angelskin (017)");  
    document.forms.varianten2.colors.options[0].value="Farbe: angelskin (017)");  
    document.forms.varianten2.colors.options[1]=new Option("Farbe: weiss (006)");  
    document.forms.varianten2.colors.options[1].value="Farbe: weiss (006)");  
 } else  
 {  
    document.forms.varianten2.colors.options[0]=new Option("Farbe: weiss (006)");  
    document.forms.varianten2.ccolors.options[0].value="Farbe: weiss (006)");  
 }  
document.forms.varianten2.cups.options.selectedIndex=0;  
document.forms.varianten2.cups.options.disabled=false;  
document.forms.varianten2.colors.options.selectedIndex=0;  
document.forms.varianten2.colors.options.disabled=false;  
showprices();  
}  

Ich vermute, dass das zweite IF das Problem ist. Wo liegt der Fehler?

Besten Dank im Voraus.
khm

  1. Hi,

    kann mir jemand sagen, warum das folgende Script nicht funktioniert?

    was heißt "nicht funktioniert" genau? Was tut das Script bzw. was tut es nicht, was erwartest du?

    while (document.forms.varianten2.cups.options.length > 0)
      {document.forms.varianten2.cups.options[0] = null;}

    Diese Schleife sieht verdächtig nach einer Endlosschleife aus. Innerhalb des Schleifenrumpfes setzt du immer nur das erste Element des Arrays auf null, dadurch ändert sich die Schleifenbedingung (Anzahl der Elemente im Array) aber nicht.

    while (document.forms.varianten2.colors.options.length > 0)
      {document.forms.varianten2.colors.options[0] = null;}

    Dito.

    Ich vermute, dass das zweite IF das Problem ist. Wo liegt der Fehler?

    Mehr kann ich erst sagen, wenn du eine Fehlerbeschreibung liefern kannst.

    So long,
     Martin

    --
    Elefant zum Kamel: "Sag mal, wieso hast du denn den Busen auf dem Rücken?"
    Kamel:             "Ziemlich freche Frage für einen, der den Penis im Gesicht hat."
    1. Hello,

      {document.forms.varianten2.cups.options[0] = null;}
      Diese Schleife sieht verdächtig nach einer Endlosschleife aus. Innerhalb des Schleifenrumpfes setzt du immer nur das erste Element des Arrays auf null, dadurch ändert sich die Schleifenbedingung (Anzahl der Elemente im Array) aber nicht.

      wenn ich mich richtig erinnere, dann bewirkt das Setzen einer Option auf null die Entfernung aus der Liste der Optionen, die Liste sollte IIRC die Liste in der Schleife immer kürzer werden.

      MfG
      Rouven

      --
      -------------------
      sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
      Because good guys need a break every once in a while.  --  Morty in "Click" (Columbia Pictures, 2006)
    2. while (document.forms.varianten2.cups.options.length > 0)
        {document.forms.varianten2.cups.options[0] = null;}

      Diese Schleife sieht verdächtig nach einer Endlosschleife aus. Innerhalb des Schleifenrumpfes setzt du immer nur das erste Element des Arrays auf null, dadurch ändert sich die Schleifenbedingung (Anzahl der Elemente im Array) aber nicht.

      Hallo,

      da das alert nicht ausgeführt wird, kann man wohl sagen, dass das Script insgesamt nicht ausgeführt wird.
      Die while-Schleife löscht alle SELECT-Felder im Formular vrarianten2.
      Das funktioniert in einem anderen Zusammenhang problemlos.

      Gruss,
      khm

      1. hallo khm
        was sagt denn die Fehler Konsole des Firefox?
        (bei mir unter Extras => Fehler-Konsole)
        Oder bist du etwa gezwungen, IE zu benutzen?

        SCNR

        liebe Grüße mbr

        1. hallo khm
          was sagt denn die Fehler Konsole des Firefox?
          (bei mir unter Extras => Fehler-Konsole)
          Oder bist du etwa gezwungen, IE zu benutzen?

          Das war ein Teil des Problems: Sie sagte nichts.
          Inzwischen habe ich das Problem gelöst, indem ich die zweite IF-Bedingungen in eine separate Funktion ausgelagert habe und diese dann in update() aufrufe.

          Gruss,
          khm

          1. was sagt denn die Fehler Konsole des Firefox?
            (bei mir unter Extras => Fehler-Konsole)
            Oder bist du etwa gezwungen, IE zu benutzen?

            Das war ein Teil des Problems: Sie sagte nichts.

            Das ist unglaubwürdig, denn dein Code im Orginalposting enthielt Fehler, die auch in der Fehlerkonsole angezeigt werden.

            Inzwischen habe ich das Problem gelöst, indem ich die zweite IF-Bedingungen in eine separate Funktion ausgelagert habe und diese dann in update() aufrufe.

            Nur das, kann die Fehler nicht beseitigt haben.

            Struppi.