|
if ... elseDiese Auswahlstruktur gibt es in fast allen Programmiersprachen mit leichten Differenzen der Schreibung. Hier also:
Entscheid zwischen zwei einzelnen Befehlen
if (bedingung)
anweisung1;
else
anweisung2;Entscheid zwischen zwei Anweisungsblöcken
if (bedingung)
{anweisungen1}
else
{anweisungen2} |
Der else-Zweig kann entfallen. Für die Formulierungder Bedingung gelten die üblichen Regeln, man beguckedie Vergleichsoperatoren.Das Ergebnis muß true oder false sein. Einfaches Ent-Oder-Weder Es gibt eine in der Formulierung für normale Hirneziemlich unverständliche, für C-Programmiererjedoch vertraute Auswahlabfrage, die nur zwei möglicheErgebnisse zuläßt. Die Alternativen werdenan eine Bedingungsabfrage einfach angehängt.Die Bedingungsabfrage ist geklammert und ergibt entwedertrue oder false. Nach dem trennenden Fragezeichenfolgen erst der true-Wert, dann nach dem trennendenDoppelpunkt der false-Wert. Das Ergebnis wirdmeist einer Variablen zugewiesen. Also im Klartext:
ergebnisvariable = (bedingungsabfrage)? true-Wert
: false-Wert; |
gucken wir uns gleich ein wildes Beispiel an:
im Seitenkopf steht diese Funktionsdefinition (das
Ergebnis errechnet er selbst, damit keiner abgucken
kann!):
<script language="JavaScript">
function Rechne() {
var ergebnis = 585/13;
do {
var eingabe = prompt("Wieviel ist 585/13 ? ","bitte
Ergebnis hierher tippen");
var bewertung = (eingabe == ergebnis) ? "Gratuliere,
das war total richtig" : (eingabe==null)?"Feigling":"nee
Du, das war nix!";
alert(bewertung);}
while ((eingabe!=
ergebnis)&&(eingabe!=null));}
</script>
Hier gleich unten wird die Funktion mit dem Button
aufgerufen:
<form><input type=button value="Versuch"
onclick="Rechne()"></form>
|
Hier haben wir die Struktur gleich geschachtelt. Da die
Variable "eingabe" in jedem Umlauf neu initialisiert
wird, erhält sie bei "Abbruch" den Wert null.
Der wird für die Differenzierung der Texte und den
Abbruch der Schleife genutzt.
Theoretisch könnte eine Funktionsdefinition im Kopf
entfallen, und der Funktionskörper als Script direkt
im Text stehen. Beim Seitenaufbau wird aber ein solches
Script ausgeführt. Dann erscheint über dem Seitentext
sofort die Abfragebox. Da das nicht erwünscht ist,
muß der Umweg über die Funktion gewählt
werden, die erst auf ein Ereignis hin, hier den Tastendruck,
gestartet wird.
Fallunterscheidung mit "switch"
Diese Auswahlstruktur prüft, ob die hinter switch
angegebenen Variablenwerte den tatsächlichen entsprechen
und führt gegebenenfalls die zugehörige
Anweisung bzw. den Anweisungsfolge aus. Der default-Zweig
wird dann ausgeführt, wenn es vorher keinen Treffer
gab. Wichtig sind die break-Anweisungen. Hier schlägt
das schwere C-Erbe von JavaScript voll zu. Die Switch-Anweisung
darf nicht mit der Select-Case-Anweisung von Basic oder
der Case-Of-Anweisung von Pascal verwechselt werden. Denn
C und JavaScript freuen sich über einen einmal
erzielten Treffer so sehr, daß sie danach alle weiteren
Anweisungen der restlichen Case-Zweige ohne Prüfung
auch noch ausführen. Ich würde so etwas Irreführung
oder einen fetten Programmfehler nennen. Mich fragt aber
keiner. Also: erst break bringt die switch-Anweisung
zum switchen.
switch (variable)
{
Case "wert1":
anweisungen1;
break;
Case "wert2":
anweisungen2;
break;
...
default:
anweisungenx;
} |
Das Bestätigungsfenster confirm
Eine Methode des immer vorhandenen Objektes window (welches
beim Aufruf nicht genannt werden muß, weil es allgegenwärtig
ist) ist confirm. Es öffnet sich ein Fragefenster,
das die Auswahl zwischen "OK" und "Abbruch" anbietet. Der
Fragetext ist natürlich, wie der programmtechnische
Einbau der angebotenen Alternative, Sache des Seitengestalters.
Der Aufruf erfolgt typischerweise als Zuweisung. Es geht
auch mit confirm allein, dann ist aber das Ergebnis nicht
auswertbar. Die Variable enthält nach dem Schließen
des Fensters entweder den Wert "true" oder bei
"Abbruch" den Wert "false". Anschließend
kann abhängig von der vorher gedrückten Taste
unterschiedlich reagiert werden.
ergebnis = confirm("Ich beginne jetzt, es kann
dauern"); |
Die Anwendung von confirm ist unkompliziert. Hier lautet
der Aufruf für den obigen Test:
<form>
<input type=button value="wieder ein Test"
onclick="ergebnis=confirm('Ich beginne jetzt, das kann
dauern'); alert(ergebnis);">
</form> |
|
|
|