![]() | ![]() ![]() ![]() ![]() ![]() |
Beschreibung
Kalender für den aktuellen Monat.
Quelltext
<script language="JavaScript">
<!--
var date=new Date();
var dd=date.getDate();
var mm=date.getMonth();
var yy=date.getYear();
document.write("<font size=+2>Kalender für ", mm+1, ".", yy, "</font><br>");
//Wochentag des 1. des Monats ermitteln
date.setDate(1);
var kk=date.getDay();
if(kk == 0)kk=7;
document.write("<table border>");
document.write("<tr><th>Mo<th>Di<th>Mi<th>Do<th>Fr<th>Sa<th>So</tr>");
document.write("<tr>");
//erste Zeile auffuellen
for(var ii=1; ii<kk; ii++) {
document.write("<td>");
}
for(ii=1; ii<32; ii++) {
date.setDate(ii);
if(date.getMonth() != mm)break;
if(ii == dd) {
//den aktuellen Tag fett
document.write("<td><b>", ii, "</b>");
} else {
document.write("<td>",ii);
}
kk++;
if(kk > 7) {
document.write("</tr>\n<tr>");
kk=1;
}
}
document.write("</tr>\</table>");
//-->
</script>
Erläuterung
Es wird zunächst eine Instanz des Date-Objekts mit dem aktuellen
Datum erzeugt, anschließend wird der Tag des Monats auf "1" gesetzt.
Nun kann bestimmt werden, auf welchen Wochentag der Erste des Monats fällt.
Daraus ergibt sich, wie viele leere Felder am Anfang des Kalenders eingefügt
werden müssen. Zum Einfügen der leeren Felder wird die erste
for-Schleife benutzt. Die zweite for-Schleife läuft
von 1 bis 31 und dient dazu, die einzelnen Tage des Monats auszugeben.
Um auch Monate mit weniger als 31 Tagen richtig darzustellen, wird die schon auf
Seite 05 beschriebene Eigenschaft des Date-Objekts
benutzt: wenn das Datum mit setDate() z.B. auf den 31.04. gesetzt wird, korrigiert
JavaScript das Datum auf den 01.05. Das hier beschriebene Script prüft
jeweils, ob der Monat des erzeugten Datums noch dem aktuellen Monat entspricht.
Ist dies nicht der Fall, dann wird die Schleife vorzeitig mit der
break-Anweisung abgebrochen.
Übungsaufgabe
1. Ändern Sie den Kalender in einen Advents-Kalender: Die einzelnen Tage
sollen jeweils als Link angezeigt werden - allerdings nur für die Tage
bis zum aktuellen Datum.
2. Erstellen Sie eine Tabelle mit 9 Zeilen und 9 Spalten, in denen das kleine
Ein-mal-Eins dargestellt wird (z.B. in Zeile 3, Spalte 7 soll das Ergebnis von
3*7 stehen).
[Lösung]
summe=0; for(zaehler=1; zaehler<=10; zaehler++) { summe+=zaehler; } | summe=0; zaehler=1; while(zaehler<=10) { summe+=zaehler; zaehler++; } |
Häufig anzutreffen sind auch while-Schleifen in Verbindung mit dem logischen Wert "true" als (degenerierte) Bedingung. Damit wird eine zunächst unendliche Schleife definiert; das Abbruchkriterium wird erst innerhalb des Anweisungsblocks überprüft. Die Aufgabe, die Summe der Zahlen von 1 bis 10 zu berechnen könnte damit so gelöst werden:
summe=0; zaehler=0; while(true) { zaehler++; if(zaehler>10)break; summe+=zaehler; }
break
Die break-Anweisung bewirkt, daß die Abarbeitung der Schleife
sofort abgebrochen wird; JavaScript springt zur ersten Zeile hinter
der Schleife.
Auf der nächsten Seite werden Funktionen behandelt. |
![]() ![]() ![]() |