Problem mit if ... else ... if
khm
- javascript
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
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
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
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
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
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
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.