File: bedingt.htm

package info (click to toggle)
selfhtml 8.1.1-1
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k, lenny
  • size: 27,660 kB
  • ctags: 4,145
  • sloc: xml: 614; java: 375; makefile: 8
file content (210 lines) | stat: -rw-r--r-- 17,855 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>SELFHTML: JavaScript / Sprachelemente / Bedingte Anweisungen (if-else/switch)</title>
<link rel="stylesheet" type="text/css" href="../../src/selfhtml.css">
<meta name="description"    content="Welche Aufgaben bedingte Anweisungen haben und wie Sie solche Anweisungen in JavaScript notieren.">
<meta name="keywords"       content="SELFHTML, JavaScript, if, else, switch, case, bedingte Anweisungen">
<meta name="author"         content="Redaktion SELFHTML, selfhtml81@selfhtml.org">
<meta name="DC.Publisher"   content="Stefan Mnz">
<meta name="DC.Date"        content="2005-09-20T06:02:21+02:00">
<meta name="DC.Identifier"  content="http://de.selfhtml.org/javascript/sprache/bedingt.htm">
<meta name="DC.Language"    content="de">
<meta name="DC.Rights"      content="../../editorial/copyright.htm">
<meta name="DC.Date.created" content="2001-10-27T08:00+01:00">
<meta name="SELF.Pagetype"  content="page">
<link rel="shortcut icon" type="image/x-icon" href="../../src/favicon.ico">
<link rel="author" title="Impressum" href="../../editorial/impressum.htm">
<link rel="contents" title="Inhaltsverzeichnis" href="../../navigation/inhalt.htm">
<link rel="index" title="Stichwortverzeichnis" href="../../navigation/stichwort.htm">
<link rel="search" title="Suche" href="../../navigation/suche/index.htm">
<link rel="help" title="Hilfe" href="../../editorial/index.htm">
<link rel="copyright" title="Urheberrecht" href="../../editorial/copyright.htm">
<link rel="top" title="SELFHTML" href="../../index.htm">
<link rel="up" title="Sprachelemente" href="index.htm">
<link rel="next" title="Schleifen (while/for/do-while)" href="schleifen.htm">
<link rel="prev" title="Operatoren" href="operatoren.htm">
<link rel="first" title="Allgemeine Regeln fr JavaScript" href="regeln.htm">
<link rel="last" title="Event-Handler" href="eventhandler.htm">
</head>
<body>

<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr>
<td colspan="2" class="nav"><a class="an" name="top"><img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"></a> <a href="../../index.htm">SELFHTML</a>/<a href="../../navigation/index.htm" target="_parent" class="navh">Navigationshilfen</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="../index.htm">JavaScript/DOM</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="index.htm">Sprachelemente</a></td>
</tr>
<tr>
<td class="doc" width="110"><a href="../../index.htm"><img src="../../src/logo.gif" width="106" height="109" border="0" alt="SELFHTML"></a></td>
<td class="docbot" width="100%"><h1 class="ph1">Bedingte Anweisungen (if-else/switch)</h1></td>
</tr>
<tr>
<td class="doctop">
<img src="../../src/dokx.gif" width="30" height="20" vspace="6" alt="Informationsseite">
</td>
<td valign="top" nowrap="nowrap">
<p>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#if_else">Wenn-Dann-Bedingungen mit "if"</a><br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#entweder_oder">Einfache Entweder-Oder-Abfrage</a><br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#switch">Fallunterscheidung mit "switch"</a><br>
</p>
</td>
</tr><tr><td colspan="2" class="doc">&nbsp;<a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a>&nbsp;</td></tr>
</table>



<h2><img src="../../src/js10.gif" width="30" height="30" alt="JavaScript 1.0" title="JavaScript 1.0"><img src="../../src/netsc2.gif" width="30" height="30" alt="Netscape 2.0" title="Netscape 2.0"><img src="../../src/msie3.gif" width="30" height="30" alt="MS IE 3.0" title="MS IE 3.0"><img src="../../src/op512.gif" width="30" height="30" alt="Opera 5.12" title="Opera 5.12"><img src="../../src/ffox1.gif" width="30" height="30" alt="Mozilla Firefox 1" title="Mozilla Firefox 1"><img src="../../src/konq31.gif" width="30" height="30" alt="Konqueror 3.1" title="Konqueror 3.1"><img src="../../src/saf1.gif" width="30" height="30" alt="Safari 1.0" title="Safari 1.0">&nbsp;<a class="an" name="if_else">Wenn-Dann-Bedingungen mit "if"</a></h2>

<p>Sie knnen die Ausfhrung von Anweisungen von Bedingungen abhngig machen.</p>

<h3 class="xmp">Beispiel:</h3>

<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite">&nbsp;<a href="anzeige/passwort.htm">Anzeigebeispiel: So sieht's aus</a> (Passwort = <i>Traumtaenzer</i>)</p>

<pre>
&lt;html&gt;&lt;head&gt;&lt;title&gt;Test&lt;/title&gt;
&lt;script type="text/javascript"&gt;
function Geheim () {
  var Passwort = "Traumtaenzer";
  var Eingabe = window.prompt("Bitte geben Sie das Passwort ein", "");
  if (Eingabe != Passwort) {
    alert("Falsches Passwort!");
  } else {
    location.href = "geheim.htm";
  }
}
&lt;/script&gt;
&lt;/head&gt;&lt;body onload="Geheim()"&gt;
&lt;h1&gt;Hier kommen Sie nur mit Passwort rein ;-)&lt;/h1&gt;
&lt;/body&gt;&lt;/html&gt;
</pre>

<h3 class="xpl">Erluterung:</h3>

<p>Das Beispiel stellt eine einfache Passwortabfrage dar. Das Script ist in einer <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="funktionen.htm">Funktion</a> namens <code>Geheim()</code> notiert, die aufgerufen wird, sobald die HTML-Datei vollstndig geladen ist. Dazu ist im einleitenden <code>&lt;body&gt;</code>-Tag der <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="eventhandler.htm">Event-Handler</a> <code>onload</code> notiert. Innerhalb der Funktion fordert ein Dialogfenster (<code>window.prompt()</code>) den Anwender auf, das Passwort einzugeben. Der Rckgabewert von <code>window.prompt()</code>, das eingegebene Passwort, wird in der Variablen <code>Eingabe</code> gespeichert.<br>
Mit <code>if (Eingabe != Passwort)</code> fragt das Script ab, ob die Eingabe anders lautet als der der Variablen <code>Passwort</code> zuvor zugewiesene Wert <code>Traumtaenzer</code>. Ist dies der Fall, sind also beide Werte nicht gleich, dann war die Eingabe falsch. In diesem Fall wird mit <code>alert()</code> eine entsprechende Meldung ausgegeben. Im anderen Fall (<code>else</code>), wenn <code>Eingabe</code> und <code>Passwort</code> den gleichen Wert haben, wird mit <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../objekte/location.htm#href">location.href</a> eine andere Seite aufgerufen, nmlich die "geschtzte" Seite.</p>

<p>Mit <code>if</code> leiten Sie eine Wenn-Dann-Bedingung ein (<i>if = wenn</i>). Dahinter folgt, in Klammern stehend, die Formulierung der Bedingung. Um solche Bedingungen zu formulieren, brauchen Sie <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="operatoren.htm#vergleich">Vergleichsoperatoren</a> und in den meisten Fllen auch <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="variablen.htm">Variablen</a>. Fr Flle, in denen die Bedingung nicht erfllt ist, knnen Sie einen "andernfalls"-Zweig definieren. Dies geschieht durch <code>else</code> (<i>else = sonst</i>).</p>

<p>Der Else-Zweig ist nicht zwingend erforderlich. Wenn Sie mehr als eine Anweisung unterhalb und abhngig von <code>if</code> oder <code>else</code> notieren wollen, mssen Sie die Anweisungen in <b>geschweifte</b> Klammern einschlieen (siehe auch den Abschnitt ber <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="regeln.htm#anweisungsbloecke">Anweisungsblcke</a>).</p>

<h3 class="inf">Beachten Sie:</h3>

<p>Eine Passwortabfrage wie im Beispiel stellt keine zuverlssige Mglichkeit dar, um Zugriffe auf eine Webseite zu kontrollieren. Denn das Passwort steht fr jeden lesbar im Quelltext und die "geschtzte" Seite kann unter Umgehung der Passwortabfrage aufgerufen werden. Verwenden Sie deshalb in der Praxis "richtige" Schutzmechanismen wie beispielsweise eine <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../../servercgi/server/htaccess.htm#verzeichnisschutz">Zugriffskontrolle mit .htaccess</a>.</p>



<p class="doc"><a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a></p>



<h2><img src="../../src/js10.gif" width="30" height="30" alt="JavaScript 1.0" title="JavaScript 1.0"><img src="../../src/netsc2.gif" width="30" height="30" alt="Netscape 2.0" title="Netscape 2.0"><img src="../../src/msie3.gif" width="30" height="30" alt="MS IE 3.0" title="MS IE 3.0"><img src="../../src/op512.gif" width="30" height="30" alt="Opera 5.12" title="Opera 5.12"><img src="../../src/ffox1.gif" width="30" height="30" alt="Mozilla Firefox 1" title="Mozilla Firefox 1"><img src="../../src/konq31.gif" width="30" height="30" alt="Konqueror 3.1" title="Konqueror 3.1"><img src="../../src/saf1.gif" width="30" height="30" alt="Safari 1.0" title="Safari 1.0">&nbsp;<a class="an" name="entweder_oder">Einfache Entweder-Oder-Abfrage</a></h2>

<p>Fr einfache Entweder-Oder-Bedingungen gibt es eine spezielle Syntax, die Sie alternativ zur if/else-Anweisung verwenden knnen.</p>

<h3 class="xmp">Beispiel:</h3>

<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite">&nbsp;<a href="anzeige/sinndeslebens.htm">Anzeigebeispiel: So sieht's aus</a></p>

<pre>
&lt;html&gt;&lt;head&gt;&lt;title&gt;Test&lt;/title&gt;
&lt;script type="text/javascript"&gt;
function Antwort () {
  var Ergebnis = (document.Formular.Eingabe.value == "42") ? "RICHTIG!" : "FALSCH!";
  document.Formular.Eingabe.value = "Die Antwort ist " + Ergebnis;
}
&lt;/script&gt;
&lt;/head&gt;&lt;body&gt;
&lt;h1&gt;Der Sinn des Lebens&lt;/h1&gt;
&lt;form name="Formular"&gt;
&lt;p&gt;Was ist der Sinn des Lebens?&lt;/p&gt;
&lt;input type="text" name="Eingabe" size="40"&gt;
&lt;input type="button" value="OK" onclick="Antwort()"&gt;
&lt;/form&gt;
&lt;/body&gt;&lt;/html&gt;
</pre>

<h3 class="xpl">Erluterung:</h3>

<p>Das Beispiel enthlt eine JavaScript-<img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="funktionen.htm">Funktion</a> namens <code>Antwort()</code>. Aufgerufen wird diese Funktion, wenn der Anwender in dem weiter unten notierten HTML-Formular auf den Klick-Button mit der Aufschrift <code>OK</code> klickt, und zwar mit dem <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="eventhandler.htm">Event-Handler</a> <code>onclick</code>. Die Funktion prft, ob der Wert des Eingabefeldes im Formular (<code>document.Formular.Eingabe.value</code>) den Wert <code>42</code> hat. Abhngig davon wird der Variablen <code>Ergebnis</code> entweder der Wert <code>RICHTIG!</code> oder <code>FALSCH!</code> zugewiesen. Anschlieend wird in dem Textfeld des Formulars, das zur Eingabe diente, ein entsprechender Satz zusammengesetzt (siehe dazu auch <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="operatoren.htm#zeichenkettenverknuepfung">Operator fr Zeichenkettenverknpfung</a>).</p>

<p>Eine einfache Entweder-Oder-Abfrage wird mit einer Bedingung eingeleitet. Die Bedingung muss in Klammern stehen, im Beispiel <code>(document.Formular.Eingabe.value == "42")</code>. Dahinter wird ein Fragezeichen notiert. Hinter dem Fragezeichen wird ein Wert angegeben, der aktuell ist, wenn die Bedingung erfllt ist. Dahinter folgt ein Doppelpunkt, und dahinter ein Wert fr den Fall, dass die Bedingung nicht erfllt ist. Da es sich um Werte handelt, die fr die Weiterverarbeitung nur sinnvoll sind, wenn sie in einer Variablen gespeichert werden, wird einer solchen Entweder-Oder-Abfrage in der Regel eine <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="variablen.htm">Variable</a> vorangestellt, im Beispiel die Variable <code>Ergebnis</code>. Der Variablen wird durch diese Art von Anweisung das Ergebnis der Entweder-Oder-Abfrage zugewiesen.</p>

<p>Um Bedingungen zu formulieren, brauchen Sie <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="operatoren.htm#vergleich">Vergleichsoperatoren</a>.</p>



<p class="doc"><a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a></p>



<h2><img src="../../src/js12.gif" width="30" height="30" alt="JavaScript 1.2" title="JavaScript 1.2"><img src="../../src/netsc4.gif" width="30" height="30" alt="Netscape 4.0" title="Netscape 4.0"><img src="../../src/msie4.gif" width="30" height="30" alt="MS IE 4.0" title="MS IE 4.0"><img src="../../src/op512.gif" width="30" height="30" alt="Opera 5.12" title="Opera 5.12"><img src="../../src/ffox1.gif" width="30" height="30" alt="Mozilla Firefox 1" title="Mozilla Firefox 1"><img src="../../src/konq31.gif" width="30" height="30" alt="Konqueror 3.1" title="Konqueror 3.1"><img src="../../src/saf1.gif" width="30" height="30" alt="Safari 1.0" title="Safari 1.0">&nbsp;<a class="an" name="switch">Fallunterscheidung mit "switch"</a></h2>

<p>Mit <code>if</code> und <code>else</code> knnen Sie genau zwei Flle unterscheiden. Wenn Sie feiner differenzieren, also zwischen mehreren Fllen unterscheiden wollen, knnen Sie zwar mehrere if-Abfragen hintereinander notieren, aber es gibt noch eine elegantere Mglichkeit: die Fallunterscheidung mit "switch". Diese Syntax, die der Programmiersprache C entlehnt ist, gibt es in JavaScript aber erst seit der Sprachversion 1.2 - ltere Browser quittieren solche Anweisungen mit einer Fehlermeldung.</p>

<h3 class="xmp">Beispiel:</h3>

<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite">&nbsp;<a href="anzeige/einsbisvier.htm">Anzeigebeispiel: So sieht's aus</a></p>

<pre>
&lt;html&gt;&lt;head&gt;&lt;title&gt;Test&lt;/title&gt;
&lt;/head&gt;&lt;body&gt;
&lt;script type="text/javascript"&gt;
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;
}
&lt;/script&gt;
&lt;/body&gt;&lt;/html&gt;
</pre>

<h3 class="xpl">Erluterung:</h3>

<p>Mit <code>switch</code> leiten Sie eine Fallunterscheidung ein (<i>switch = Schalter</i>). Dahinter folgt, in runde Klammern eingeschlossen, eine Variable oder ein Ausdruck, fr dessen aktuellen Wert Sie die Fallunterscheidung durchfhren. Im Beispiel ist das die Variable mit dem Namen <code>Eingabe</code>. Diese Variable wird vor der Fallunterscheidung mit einem Wert versorgt, denn ein Dialogfenster (<code>window.prompt()</code>) mit einem Eingabefeld fordert den Anwender auf, eine Zahl zwischen 1 und 4 einzugeben. Der eingegebene Wert wird in <code>Eingabe</code> gespeichert.</p>

<p>Die einzelnen Flle, die Sie abfragen mchten, werden innerhalb geschweifter Klammern notiert. Jeden einzelnen Fall leiten Sie mit <code>case</code> ein (<i>case = Fall</i>). Dahinter folgt die Angabe des Wertes, auf den Sie prfen wollen. Die Anweisung <code>case "1":</code> im obigen Beispiel bedeutet dann so viel wie: 'wenn die Variable Eingabe den Wert "1" hat'. Im Beispiel wird fr jeden Fall eine individuelle Meldung ausgegeben.</p>

<p>Wichtig ist dabei auch das Wort <code>break</code> am Ende jedes Falls (<i>break = abbrechen</i>). Wenn Sie das Wort weglassen, werden nmlich alle nachfolgenden Flle auch ausgefhrt, aber das wollen Sie ja in der Regel nicht.</p>

<p>Fr den Fall, dass keiner der definierten Flle zutrifft, knnen Sie am Ende der Fallunterscheidung den Fall <code>default:</code> definieren. Die darunter stehenden Anweisungen werden ausgefhrt, wenn keiner der anderen Flle zutrifft.</p>



<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr><td colspan="2" class="doc">
&nbsp;<a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a>
</td></tr>
<tr><td class="doc"><a href="schleifen.htm"><img src="../../src/next.gif" width="10" height="10" border="0" hspace="10" alt="weiter"></a></td>
<td width="100%"><img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="schleifen.htm">Schleifen (while/for/do-while)</a>
</td></tr>
<tr>
<td class="doc"><a href="operatoren.htm"><img src="../../src/prev.gif" width="10" height="10" border="0" hspace="10" alt="zurck"></a></td>
<td><img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="operatoren.htm">Operatoren</a>
</td>
</tr>
<tr><td colspan="2" class="doc">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="nav"><a class="an" name="bottom"><img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"></a> <a href="../../index.htm">SELFHTML</a>/<a href="../../navigation/index.htm" target="_parent" class="navh">Navigationshilfen</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="../index.htm">JavaScript/DOM</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="index.htm">Sprachelemente</a></td>
</tr>
</table>

<p>&copy; 2005 <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../../editorial/impressum.htm">Impressum</a></p>

</body>
</html>