Stress mit Switch-Anweisung
ANUBIS
- javascript
0 wahsaga0 Maxx0 ANUBIS0 siro0 Thomas Meinike
Hallo!
Die Switch-Anweisung is ja ganz gut und schön, aber sie hat auch einige Macken...
1. Der einzige Operator, der möglich ist, ist ==, der ja durch case automatisch definiert wurde. Andere wie < funzen nich.
2. Es is nich möglich, Bedingungen wie bei der if-Anweiung mit && bzw. || zu verbinden.
3. Nach case muss immer eine Zahl eingesezt werden, eine Variable wird nicht berücksichtigt. Selbst wenn der Wert der Variable ins Formular richtig eingegeben wurde, wird die Default-Anweisung ausgeführt.
Bei diesen drei Dingen habe ich hunderte von Möglichkeiten probiert (Klammern usw.), doch niemals hat es funktioniert.
Ich frage mich jetzt: Bin ich einfach nur zu blöd oder geht das wirklich nicht???
Thank You!
mfg ANUBIS
hi,
Die Switch-Anweisung is ja ganz gut und schön, aber sie hat auch einige Macken...
nein, sie ist lediglich für das, was du vorhast, ungeeignet.
- Der einzige Operator, der möglich ist, ist ==, der ja durch case automatisch definiert wurde. Andere wie < funzen nich.
ja. und?
- Es is nich möglich, Bedingungen wie bei der if-Anweiung mit && bzw. || zu verbinden.
ja. und?
- Nach case muss immer eine Zahl eingesezt werden, eine Variable wird nicht berücksichtigt. Selbst wenn der Wert der Variable ins Formular richtig eingegeben wurde, wird die Default-Anweisung ausgeführt.
keine zahl, aber ein _wert_. die variable steht im switch(), und wird in den cases mit festen werten verglichen.
und?
Ich frage mich jetzt: Bin ich einfach nur zu blöd oder geht das wirklich nicht???
wenn dein auto nicht über's wasser fahren will - hat es dann "ein paar macken", oder hast du es vielleicht einfach nur nicht nach seinem vorgesehenen einsatzzweck verwendet?
gruss,
wahsaga
Hallo Anubis,
Die Switch-Anweisung is ja ganz gut und schön, aber sie hat auch einige Macken...
- Der einzige Operator, der möglich ist, ist ==, der ja durch case automatisch definiert wurde. Andere wie < funzen nich.
richtig, dafür ist if() zuständig.
- Es is nich möglich, Bedingungen wie bei der if-Anweiung mit && bzw. || zu verbinden.
richtig, so etwas würde man dann mit einem if() machen.
- Nach case muss immer eine Zahl eingesezt werden, eine Variable wird nicht berücksichtigt.
ja, das wurde seinerzeit so festgelegt.
Ich frage mich jetzt: Bin ich einfach nur zu blöd oder geht das wirklich nicht???
Ich weis nicht was genau dir vorschwebt. Aber du kannst if() und switch() deinen wünschen entsprechend mischen:
if(a<4) {
switch(a) {
case 1:
case ...
else
foo();
Alles klar?
Grüße,
Jochen
Ja bloß...
Ich will ne Anweisung machen, die etwa 2000 Möglchikeiten berücksichtigt. Da kann ich nicht mit if else anfangen...
Übrigens, stürzt der IE bei 6k-8k Zeilen Code ab???
ANUBIS
Hallo,
Ich will ne Anweisung machen, die etwa 2000 Möglchikeiten berücksichtigt. Da kann ich nicht mit if else anfangen...
Das kommt darauf an: Du kannst die 2000 Möglichkeiten aber bestimmt so strukturieren, dass Du einige Abfrage zusammenfasst. Da kommen dann bestimmt keine 2000 Abfragen zusammen. Näheres dazu kann man aber nur sagen, wenn man den Gegenstand Deiner Abfragen kennt...
Übrigens, stürzt der IE bei 6k-8k Zeilen Code ab???
Nur wenn dicke Fehler im Code sind...
;o) bluntburn
Moin!
Ja gut...
2000 Möglichkeiten brauche ich WIRKLICH, und jede der 2000 hat noch mal so 2 bis 3 Möglichkeiten (Haltet mich BITTE nihct für verrückt!!)
Wenn nicht switch, wass soll ich dann nehmen?? Zusammenfassen geht nicht...
Thank You!
mfg
ANUBIS
2000 Möglichkeiten brauche ich WIRKLICH, und jede der 2000 hat noch mal so 2 bis 3 Möglichkeiten (Haltet mich BITTE nihct für verrückt!!)
Wenn nicht switch, wass soll ich dann nehmen?? Zusammenfassen geht nicht...
keine Ahnung kommt darauf an wie deine Struktur aussieht. Normalerweise ein assoziatives Array oder eine Funktion.
Struppi.
hi,
Ich will ne Anweisung machen, die etwa 2000 Möglchikeiten berücksichtigt. Da kann ich nicht mit if else anfangen...
dann solltest du zunächst einmal das konzept überdenken.
wenn so viele abfragen innerhalb eines scriptes nötig sind (bzw. eher nötig erscheinen), scheint mir da das konzept zumindest zweifelhaft zu sein.
gruss,
wahsaga
Ich will ne Anweisung machen, die etwa 2000 Möglchikeiten berücksichtigt. Da kann ich nicht mit if else anfangen...
Ich hab noch nie switch case verwendet und auch noch nie das Gefühl gehabt das ich es brauche. In der Regel läßt sich sowas mit assoziativen Arrays eleganter lösen.
Struppi.
Hi,
Ich will ne Anweisung machen, die etwa 2000 Möglchikeiten berücksichtigt. Da kann ich nicht mit if else anfangen...
Und auch nicht mit switch case. Da muß es besseres geben ... ;-)
Übrigens, stürzt der IE bei 6k-8k Zeilen Code ab???
Nein, keine Version.
Gruß, Cybaer (der in knapp 9 Jahren JS-Programmierung switch case noch nie verwendet und nie vermißt hat)
Hallo Anubis.
- Es is nich möglich, Bedingungen wie bei der if-Anweiung mit && bzw. || zu verbinden.
Also das || kannst du zumindest improvisieren:
case 1:
case 2: ... break;
default: ...
heißt soviel wie:
if (1||2) ...
else ...
MfG _Siro.
Hallo,
Bei diesen drei Dingen habe ich hunderte von Möglichkeiten probiert (Klammern usw.), doch niemals hat es funktioniert.
Ich frage mich jetzt: Bin ich einfach nur zu blöd oder geht das wirklich nicht???
Mit switch kann man auch auf true/false pruefen und bei den cases entsprechende Bedingungen formulieren:
function bla(xyz)
{
switch(true)
{
case(xyz<=10):
alert("Der Wert ist kleiner als 10 oder gleich 10.");
break;
case(xyz>10 && xyz<20):
alert("Der Wert liegt zwischen 10 und 20.");
break;
case(xyz>=20):
alert("Der Wert ist groesser als 20 oder gleich 20.");
break;
default:
alert("Kein Ergebnis erhalten."); // wenn xyz z. B. ein String ist
break;
}
}
bla(5);
bla(15);
bla(20);
bla("abc");
MfG, Thomas
Hallo Thomas,
switch(true)
{
case(xyz<=10):
Das bringt den Netscape 4 zum Absturz beim Parsen des Quellcodes (nicht einmal beim Ausführen), wenn JavaScript aktiviert ist.
Viele Grüße,
Christian
Hi,
Das bringt den Netscape 4 zum Absturz beim Parsen des Quellcodes (nicht einmal beim Ausführen), wenn JavaScript aktiviert ist.
Nur der Vollständigkeit halber (für Old-Browser-Junkies wie meiner einer ;-)): Und ältere Navigatoren kriegen beim Parsen (nicht Ausführen) von switch generell die Krise.
Gruß, Cybaer
Hallo,
switch(true)
{
case(xyz<=10):Das bringt den Netscape 4 zum Absturz beim Parsen des Quellcodes (nicht einmal beim Ausführen), wenn JavaScript aktiviert ist.
Das hatte ich noch gar nicht bemerkt, wobei ich switch(true){...} in online gestellten HTML-Dokumenten auch nicht verwendet habe -- bei dieser SVG-Anwendung: http://svglbc.datenverdrahten.de/?code=wavelength2rgb fand ich es mal ganz praktisch.
BTW: Auch PHP kann switch(true|false) analog verarbeiten.
MfG, Thomas