"Case < Wert" bzw. "Case > Wert" möglich?
Jim
- javascript
Hallo!
Wir haben in einem JavaScript per
Case "Zahl":
ganze Zahlen abgefragt und auch default am Schluss zugewiesen.
Kann man auch "<" oder ">" mit
der Case Abfrage verwenden?
Also z.B.
Case <1
Wir sind von folgenden Script ausgegangen:
<script type="text/javascript">
<!--
var Eingabe = window.prompt("Geben Sie eine Zahl zwischen 1 und 4 ein:","");
switch(Eingabe) {
case "1":
alert("Sie sind sehr bescheiden");
break;
case "2":
alert("Sie sind ein aufrichtiger Zweibeiner");
break;
case "3":
alert("Sie haben ein Dreirad gewonnen");
break;
case "4":
alert("Gehen Sie auf allen Vieren und werden Sie bescheidener");
break;
default:
alert("Sie bleiben leider dumm");
break;
}
// -->
</script>
Gruß,
Jim
Jim,
Kann man auch "<" oder ">" mit
der Case Abfrage verwenden?
1. Warum schaust du nicht nach? (So schwer zu finden: switch/)
2. Warum nimmst du nicht if mit else-Zweig?
Gunnar
Warum nciht?
<script type="text/javascript">
<!--
var Eingabe = window.prompt("Geben Sie eine Zahl zwischen 1 und 4 ein:","");
switch(Eingabe) {
case "<1":
alert("Sie sind sehr bescheiden");
break;
case "<2":
alert("Sie sind ein aufrichtiger Zweibeiner");
break;
case "<3":
alert("Sie haben ein Dreirad gewonnen");
break;
case "<4":
alert("Gehen Sie auf allen Vieren und werden Sie bescheidener");
break;
default:
alert("Sie bleiben leider dumm");
break;
}
// -->
</script>
Tag Hannes.
Warum nciht?
Weil dein Beispiel beim simplen Eingeben einer Zahl zwischen 1 und 4 immer im default-Zweig landen muss, es sei denn, es wurde "<1" eingetippt.
Siechfred
Tag Siechfred.
Weil dein Beispiel beim simplen Eingeben einer Zahl zwischen 1 und 4 immer im default-Zweig landen muss, es sei denn, es wurde "<1" eingetippt.
Richtig, das ist der Sinn einer Case Anweisung und die Lsg auf sein Problem wie ich es verstanden habe^^
Hannes
Tag Jim.
Kann man auch "<" oder ">" mit
der Case Abfrage verwenden?
Ja, aber nicht so:
Case <1
Sondern so:
<script type="text/javascript">
<!--
var Eingabe = prompt("Zahl: ", "");
switch(isNaN(Eingabe)) {
case true:
alert("Keine gueltige Zahl");
break;
case false:
switch(Eingabe >= 10) {
case true:
alert("Eingabe ist groesser/gleich 10");
break;
case false:
alert("Eingabe ist kleiner 10");
break;
}
}
// -->
</script>
»switch« kann so ziemlich alles sein (Variable, Objekt oder wie in deinem Fall eine Bedingung), in Abhängigkeit davon ergibt sich die Notation der case-Anweisung. In meinem Beispiel sind zwei switch-Abfragen verschachtelt, in der ersten wird die Eingabe daraufhin untersucht, ob es eine Zahl ist, in Abhängigkeit davon wird eine zweite switch-Abfrage notiert, die eine gültige Zahl mit 10 vergleicht. Das Ganze deshalb so umständlich, da der Wert, der Case zugewiesen wird, das Ergebnis einer Operation sein muss (im vorliegenden Beispiel true oder false), nie die Operation selber, dafür ist switch da.
Siechfred
switch(isNaN(Eingabe)) {
case true:
alert("Keine gueltige Zahl");
break;
case false:
Siechfred,
Komische Art hast du da, if then else aufzuschreiben.
Gunnar
Tag Gunnar.
Komische Art hast du da, if then else aufzuschreiben.
Ich habe einfach nur die Frage beantwortet und gehe davon aus, dass der OP des Lesens mächtig ist und so selber erkennen kann, dass switch-case hier nicht der galanteste Weg ist.
Siechfred
Hallo,
Kann man auch "<" oder ">" mit
der Case Abfrage verwenden?
Ja, z. B. so:
var Eingabe = window.prompt("Geben Sie eine Zahl zwischen 1 und 4 ein:","");
switch(true) {
case (Eingabe == 1):
alert("bla");
break;
case (Eingabe >= 2 && Eingabe <=4):
alert("blub");
break;
default:
alert("blablub");
break;
}
MfG, Thomas
Hallo Thomas,
jetzt bin ich baff.
Ich bin mit den syntaktischen Feinheiten von Javascript nicht hundertprozentig sattelfest, aber das hat mich bisher nicht gestört, weil ich mich dann an der ähnlichen, aber in den meisten Fällen strengeren Syntax von C orientiert habe.
Und deshalb irritiert mich das hier gewaltig:
switch(true) {
case (Eingabe == 1):
alert("bla");
break;
case (Eingabe >= 2 && Eingabe <=4):
alert("blub");
break;
default:
alert("blablub");
break;
}
Ich war immer der Meinung, hinter 'case' dürften nur Konstanten als Selektor stehen, nicht jedoch Variablen oder gar komplexe Ausdrücke.
Oder ist das in JS nicht so?
In stiller Verwunderung,
Martin
Hallo,
Ich war immer der Meinung, hinter 'case' dürften nur Konstanten als Selektor stehen, nicht jedoch Variablen oder gar komplexe Ausdrücke.
Oder ist das in JS nicht so?
Lt. ECMAScript-Spezifikation sind auch Ausdruecke zulaessig.
MfG, Thomas
Tag Thomas.
Kann man auch "<" oder ">" mit
der Case Abfrage verwenden?
Ja, z. B. so:
[...]
Oh, danke für die Aufklärung :-)
Allerdings muss man wissen, dass es in diesem Fall switch(true) statt switch(eingabe) heißen muss.
Siechfred