just another page - you may find interesting: programming and some other stuff

google.de | FH Karlsruhe
Portal | Gästebuch | News | Links | Mami | about me | Humor | StayFriend | Amazon-Wunschliste |
             Pascal | Delphi | C++ | html | JS | Sortieralgorithmen
Semester 1 | Semester 2 | Semester 3 | Semester 4 |
                                            CiscoTrainer | MultiUserChat | Knobelspiel: Eisbären und Pinguine
                                                                                                    main | info | kontakt
subglobal8 link |

JavaScript

JavaScript-Befehle und Einführung

Inhalt: Einführung / Informationen in der Statuszeile ausgeben / Statusanzeige bei MouseOver / Dynamische Links oder MouseOver-Effekt u n d  erzeugen eines neuen Fensters / Laufschrift in der Statuszeile / Laufschrift in einem Formular / Hintergrundfarbe vom Benutzer ändern lassen / Datum und Zeit anzeigen / Dropdownliste als Inhaltsverzeichnis / Messagebox

Einführung

Hier möchte ich eine Einführung in JavaScripts geben. Die JavaScripts, die ich hier vorstelle, verwende ich selbst und können auch hier heraus kopiert werden und dann in die eigene HTML-Datei eingebunden werden. Ich hoffe, dass alle JavaScripts auf anhieb funktionieren. Wenn nicht, ein wenig herum experimentieren hilft vielleicht. Die Javascripts werden entweder im Dokumentenkopf (zwischen <head> und </head>) oder aber erst später eingefügt. Beide dieser Varianten sind möglich. Wenn der Code aber im Kopf steht, bietet dies nicht nur eine bessere Übersicht, sondern Scripts, die schon beim Laden zur Verfügung stehen sollen, sollten in den Dokumentkopf. Im Anschluß an den Code kommt immer eine kurze Erklärung, die angibt, für welche Bereiche der Javascript definiert werden soll.

Ein Javascriptcode beginnt immer mit

<SCRIPT LANGUAGE="JavaScript">
<!--

Die erste Zeile teilt dem Browser mit, dass es sich nun um Javascriptcode handelt. Die zweite Zeile leitet den sogenannten Kommentar ein, der von nicht javascriptfähigen Browsern ignoriert wird.
Die beiden letzten Zeilen

// end hide -->
</SCRIPT>

beenden sowohl Kommentar als auch Javascriptbereich.

Zurück zum Inhalt

Informationen in der Statuszeile ausgeben

Die ist wohl einer der kürzesten JavaScripts überhaupt. Deshalb will ich mit ihm beginnen.

<SCRIPT LANGUAGE="JavaScript">
<!-- ;
window.defaultStatus = "Javascriptbereich";

// end hide -->
</SCRIPT>


Durch diesen Script kann in der Statuszeile links unten im Browser Informationen zusätzlich ausgegeben werden. Als erstes wird window angesprochen und durch einen Punkt getrennt die Eigenschaft defaultStatus. Der nun in Anführungszeichen stehende Text wird in der Statuszeile ausgegeben, sofern diese nicht durch das Anzeigen eines Links oder eines MouseOver-Effektes belegt ist.

Zurück zum Inhalt

Statusanzeige bei MouseOver

Es muss nicht nur eine Zusatzinformation permanent in der Statuszeile ausgegeben werden, es kann auch eine Zusatzinformation ausgegeben werden, wenn sich die Maus über einem Link befindet. JavaScriptfunktionen werden durch "Eventhandler" ausgelöst. Sie beginnen normalerweise mit "on" (onMouseover, onMouseout, onClick,.....) und beziehen sich auf einen von den HTML-Tags entsprechend eingegrenzten Textbereich. Nach dem Eventhandler kommt ein Istgleich-Zeichen, dann in Anführungszeichen der Javascriptbefehl oder die Funktion. Beispiel: onclick="funktion()". Es kann vorkommen, dass Netscape diese Eventhandler nicht immer anerkennt (leider).

<SCRIPT LANGUAGE="JavaScript">
<!-- ;
<a href="Hauptseite.htm" onMouseover="window.status='Infos über mich und Links (wer das Menü nicht mag)'; return true;">Zur Hauptseite</a> 

// end hide -->
</SCRIPT>

Als Zusatzattribut innerhalb eines Links kann der Eventhandler onMouseover eingefügt werden. Dabei wird auf die Statuszeile Bezug genommen und dort der Text ausgegeben, wenn man mit der Maus über das Link fährt. Der auszugebende Text wird in Auslassungszeichen geschrieben, da ja der Befehl nach onMouseover in Anführungszeichen steht. Die return true-Anweisung muss dazu. Ohne sie funktioniert der JavaScript nicht und es soll damit auch zum aufrufenden Programm zurückgekehrt werden

Zurück zum Inhalt

Dynamische Links oder MouseOver-Effekt u n d  erzeugen eines neuen Fensters

Bei dem MouseOver-Effekt ändert sich das Aussehen des Links, wenn die Maus sich über ihm befindet. Ich werde diesmal auch gleich die Erzeugung eines neuen Fensters hier mit einbringen, da ich einige Schwirigkeiten hatte, bis ich es so hatte, wie ich es mir ausgemalt hatte. Popup-Fenster sind nicht nur für die allseits beliebte Werbung, wenn man eine neue Seite öffnet, sondern können auch, wie hier gezeigt wird, Zusatzinformationen enthalten. So können beim Laden der Seite angezeigt werden oder aber auch später.
JavaScriptcode für ein Popupfenster, das beim Aufrufen der Seite angezeigt wird:
 

<SCRIPT LANGUAGE="JavaScript">
<!-- ;
function fenster()
{
var win;
win=window.open("","Fenster","width=160,height =100");
win.document.write("<h4>Dies ist ein sich selbst schließendes Popup-Fenster</h4>");
win.setTimeout('window.close()',4000);
}
// end hide -->
</SCRIPT>

<body onload="fenster()">


Es wird eine function mit beliebigen Namen definiert. Er sollte aber für Übersicht sorgen. Nun wird eine Variable mit Namen win festgelegt und dann mit window.open mit Verweis auf die Variable ein kleines Fenster generiert. In den nun folgenden runden Klammern stehen Attribute, die das Aussehen des Fensters beeinflussen. Am Beginn stehen zwei Anführungszeichen. In diesen Anführungszeichen kann auf eine HTML-Datei Bezug genommen werden. Wenn dieser Bereich allerdings leer bleibt, wird ein neues Fenster erzeugt. Danach kommt der Fenstername. Wichtig: Es dürfen keine Leer- oder Sonderzeichen verwenden, sonst funktioniert es nicht! Danach können noch zahlreiche Angaben folgen, die das Aussehen des Fensters ändern. In der nun folgenden Zeile wird die Variable win angesprochen, dann wird in das Dokument mit write der Text geschrieben. Innerhalb der runden Klammern können HTML-Tags verwendet werden. In der letzten Zeile wird wieder win angesprochen und mit setTimeout ein Ereignis nach einer bestimmten Zeit in Millisekunden auslöst. In runden Klammern steht das entsprechende Ereignis. Hier window.close(), dass das Schließen des Fensters veranlasst und abschließend der der Zeitinterval.

<SCRIPT LANGUAGE="JavaScript">
<!-- ;
bildeffekt = new Image();
bildeffekt.src = "effekt1.gif";
bildeffekt1 = new Image();
bildeffekt1.src = "effekt2.gif";

function wechsel(nummer,quelle)
{
window.document.images[nummer].src = quelle.src;
}

<body>
<a href="#" onmouseover="wechsel(0,bildeffekt1)" onmouseout="wechsel(0,bildeffekt)"><CENTER><IMG SRC="effekt1.gif" WIDTH="100" HEIGHT="50" ALT="Mouse-over-Effekt" border=0></CENTER></a>
</body>
// end hide -->
</SCRIPT>


Zuerst wird ein neues Objekt erstellt, das hier den beliebigen Namen Bildeffekt bekommt. Nun wird mit bildeffekt.src =    die Grafikdatei angegeben, auf die sich das neue Objekt beziehen soll. Für den Mouseover-Effekt sind zwei Bilder notwendig. Es werden deshalb auch zwei entsprechende Objekte erstellt. Jetzt wird die Funktion zum Bildwechsel erstellt. Hierbei werden zwei Parameter namens Nummer und Quelle weitergeben, welche in der Funktion und beim Aufruf verwendet werden. Über "window.document.images[nummer].src = quelle.src;" wird einem Image eine neue Grafikdatei zugewiesen. Hinweis: Alle Bilder auf einer Page werden von 0 aus durchnumeriert. Mit quelle entsteht ein weiterer Platzhalter, der beim Aufruf der Funktion durch onMouseover oder onMouseout mit in dem in quelle definiertem Objekt belegt wird (bildeffekt1 oder bildeffekt).

<html>
<head>
<script LANGUAGE="JavaScript">
<!-- ;
download1 = new Image();
download1.src = "Grafiken/download1.gif";
download2 = new Image();
download2.src = "Grafiken/download2.gif";
info1 = new Image();
info1.src = "Grafiken/Info1.gif";
info2 = new Image();
info2.src = "Grafiken/Info2.gif";

function wechsel(nummer,quelle)
{
window.document.images[nummer].src = quelle.src;
}
function ICQ99beta()
{
var win;
win=window.open("","Programminformationen","width=700,height=10 0");
win.document.write("<h3>Der ICQ-Messanger ist ein nettes kleines Programm, in dem auf einer Liste alle Freunde verzeichnet sind, die auch das Programm haben. Damit kann man eine Mitteilung direkt zukommen lassen oder jemanden zum Chaten auffordern. Auch das Senden von Daten ist möglich.</h3>");
win.setTimeout('window.close()',15000);
}

function GetRight()
{
var win;
win=window.open("","Kleinfenster","width=700,height=110");
win.document.write("<h3>Dieses Programm ist ein sehr guter Assistent, wenn man viele Dateien nacheinander oder große Dateinen herunterladen möchte. Alle zu ladende Dateien kommen mit Adresse auf eine Liste und werden dann nach und nach auf der Festplatte gespeichert. Das Programm soll auch bei einem Abbruch des Downloadevorgangs die Datei dort wieder anfangen runterzuladen, an der Stelle, an dem der Abbruch stattgefunden hat.</h3>");
win.setTimeout('window.close()',23000);
}

// end hide -->
</script>
</head>

<center><a href="" onmouseover="wechsel(0,info2); GetRight()" onmouseout="wechsel(0,info1)"><img SRC="Grafiken/Info1.gif" NOSAVE BORDER=0 height=56 width=56></a></center>
<center><a href="http://www.tucows.de/files/getrt411.exe" onmouseover="wechsel(1,download2)" onmouseout="wechsel(1,download1)"><img SRC="Grafiken/download1.gif" NOSAVE BORDER=0 height=56 width=56></a></center>

</body>
</html>


Wenn du die Maus über das Info-Icon ziehst, sollte es, wie auch das unter Icon die Farbe wechsel. Zudem sollte ein "Info-Fenster" geöffnet werden, dass sich nach 23 sec. wieder schließt. Die zwei Effekte und das Info-Fenster werden durch die etwas längere Codetabelle erstellt. Wer es zu Testzwecken rauskopiert, benötig dazu alle vier Bilddateien. Dort wo die Seite abgelegt wird, muss auch das Verzeichnis Grafiken erstellt werden. Dann sollte es klappen. Da man meines Wissens nicht an die jeweils andere Grafik kommt, stelle ich hier alle vier zur Verfügung. DIE VIER IMAGEDATEIEN
(Anmerkung: Auf der alten Seite ging das - auch der Hintergundfarbwechseln geht nicht mehr. Ich glaub aber, es geht beide, allerdings durch den neuen Seitenaufbau geschieht das hinter dem Hintergrund.... naja. Der Code stimmt aber.)

 

Zurück zum Inhalt

Laufschrift in der Statuszeile

Die Laufschriftmethode erfreut sich einer ähnlichen Beliebtheit, wie die Mouseovereffekte bei Links. Dadurch, dass sich etwas bewegt, ziehen sie die Aufmerksamkeit des Betrachters auf sich. Sie sind ein guter Blickfang. Laufschriften können entweder in der Statuszeile oder in einem Formularfeld angezeigt werden. Zuerst zur Laufschrift in der Statuszeile.

<SCRIPT LANGUAGE="JavaScript">
<!-- ;
text="JavaScript-Befehle und Einführung "
function laufschrift()
{
a=text.substring(0, 1);
text=text.substring(1, text.length);
text= text + a;
window.status=text;
setTimeout('laufschrift()',200);
}

// end hide -->
</SCRIPT>

<body onload="laufschrift()">

Der Variablen text wird ein Laufschrifttext,auch Zeichenkette oder string genannt, zugewiesen. Als nächstes wird in der Funktion laufschrift() dem ersten Zeichen der Zeichenkette die einfache Variable a zugewiesen. Wer sich schon mal in BASIC probiert hat, ok vielleicht primitiv, aber gut zum Einstieg geeignet, weiß vielleicht, dass über substring Zeichen einer Zeichenkette ermittelt werden können. Das Anfangszeichen und das Endzeichen wird in der Klammer festgelegt. (0,1) bedeutet, dass vom ersten bis zum zweiten Zeichen alles in die Variablen a übertragen wird. Wie bei den Bildern einer Seite, beginnt man auch hier bei 0 beginnend zu zählen.
In der zweiten Zeile wird der Variablen text eine neue Zeichenkette zugewiesen und zwar alles, was zuvor unter der Variablen text abgespeicherte wurde. Allerdings wird der erste Buchstabe abgezogen und dann in der nächsten Zeile durch text= text + a; am Schluß wieder angefügt. Jetzt wird wieder die Windowsstatuszeile angesprochen und der Text aus der Variablen ausgegeben. Durch die nächste Zeile wird 0,2 Sekunden gewartet und die Funktion erneut ausgeführt. Beim zweiten Aufruf der Funktion hat sich die Zeichenkette von "JavaScript-Befehle und Einführung " zu "avaScript-Befehle und Einführung J" geändert. Dies folgt nun alle 0,2 Sekunden in einer Endlosschleife. Dadurch entsteht erst eine Bewegung. Beim Laden der Seite wird über den Eventhandler onLoad im Body-Tag die Funktion automatisch aufgerufen.

Zurück zum Inhalt

Laufschrift in einem Formular

Der Javascriptcode ändert sich nur geringfügig, wenn die Laufschrift in einem Fenster (eigentlich ist es ja kein richtigen Fenster, aber was soll's) anstelle der Statusanzeige ausgegeben werden soll. Dazu muss auf das Fenster Bezug genommen werden. Für Form und auch für Input muss ein Name vergeben werden, auf den dann zugegriffen werden kann. Z. B. Formname=ausgabe, Inputname=schrift: window.document.ausgabe.schrift.value=text. Das Attribut value (Wert) im Input-Tags leitet die Ausgabe im Formularfeld ein. Da nicht beide Laufschriften durch die onLoad-Anweisung ausgeführt werden, da nur die erste Anweisung ausgeführt wird, muss entweder für das Fenster oder die Statuszeile durch einen anderer Eventhandler aktiviert werden. In diesem Beispiel wird ein Button definiert, der die Laufschrift im Ausgabefeld starten soll. Die Variable text hat mit dem bei Input definierten type="text" nur zufälligerweise den Namen gemeinsam.

<SCRIPT LANGUAGE="JavaScript">
<!-- ;
text="JavaScript-Befehle und Einführung "
function laufschrift2()
{
a=text.substring(0, 1);
text=text.substring(1, text.length);
text= text + a;
window.document.ausgabe.schrift.value=text;
setTimeout('laufschrift2()',200);
}

 // end hide -->
</SCRIPT>

<body>
<form name="ausgabe">
<input type=button value="Laufschrift im Formularfeld" onClick="laufschrift2()">
<input type="text" name="schrift" size="20" readonly>
</form> 
</body>


 

Hier ein Formular zum Testen:

 

Zurück zum Inhalt

Hintergrundfarbe vom Benutzer ändern lassen

<TABLE BORDER="1" CELLSPACING="5" CELLPADDING="5" align=center>
<tr>

<td ALIGN=CENTER WIDTH="30" BGCOLOR="#000000">
<center><b><a href="#" onMouseOver="document.bgColor='000000'">H</a></b></center>
</td>

<td ALIGN=CENTER WIDTH="30" BGCOLOR="#000062">
<center><b><a href="#" onMouseOver="document.bgColor='000062'">t</a></b></center>
</td>

<td ALIGN=CENTER WIDTH="30" BGCOLOR="#006F00">
<center><b><a href="#" onMouseOver="document.bgColor='006f00'">g</a></b></center>
</td>

<td ALIGN=CENTER WIDTH="30" BGCOLOR="#00BFFF">
<center><b><a href="#" onMouseOver="document.bgColor='00BFFF'">r</a></b></center>
</td>

<td ALIGN=CENTER WIDTH="30" BGCOLOR="#F07800">
<center><b><a href="#" onMouseOver="document.bgColor='F07800'">u</a></b></center>
</td>

<td ALIGN=CENTER WIDTH="30" BGCOLOR="#620062">
<center><b><a href="#" onMouseOver="document.bgColor='620062'">a</a></b></center>
</td>

<td ALIGN=CENTER WIDTH="30" BGCOLOR="#CCCCCC">
<center><b><a href="#" onMouseOver="document.bgColor='CCCCCC'">b</a></b></center>
</td>
</tr>
</table>

Dies ist etwas, was einen sehr schönen Effekt hervorruft. In der untenstehenden Tabelle sind die Farben als Link, der auf die gleiche Seite verweist, abgelegt. Durch MouseOver wird document und dann bgcolor angesprochen. Nun kann sich jeder selbst den Hintergrund einstellen und kann sich nicht mehr beschweren: rote Schrift auf schwarzem Hintergrund sieht nicht gut aus. Na bitte, soll er halt grün nehmen. Die Zellen sollten die gleiche Farbe wie der wählbare Hintergrund haben oder die Farbe sollte als Wort da stehen.

H
t
g
r
u
a
b
 

Zurück zum Inhalt

Datum und Zeit anzeigen

<SCRIPT LANGUAGE="JavaScript">
<!-- ;
function datum()
{
derzeit = new Date();
jahr=derzeit.getYear()-100;
monat=derzeit.getMonth()+1;
tag=derzeit.getDate();
zeit = new Date();
stunde=zeit.getHours();
minute=zeit.getMinutes();
sekunde=zeit.getSeconds();

if (sekunde < 10)
{
sekunde="0"+sekunde
}

if (minute < 10)
{
minute="0"+minute
}

if (jahr < 10)
{
jahr="0"+jahr
}
this.document.uhr.ausgabe.value=("Wir haben den "+tag + ". " + monat+". 20" +jahr+" um "+stunde + ":" + minute+":" +sekunde);
window.setTimeout ('datum()', 1000);
}
// end hide -->
</SCRIPT>

<body>
<form name="uhr">
<input type="button" value="Uhrzeit anzeigen" onclick="datum()">
<input type="text" name="ausgabe" size="20" readonly>
</form>
</body>


In der etwas längeren Funktion datum wird der Variablen derzeit ein neues Objekt zugewiesen (derzeit = newDate), mittels der vordefinierten und für ein "Date-Objekt" gültigen Methoden getYear, getMonth und getDate werden dieser Variablen Jahr (zweistellig), Monat (Achtung: Javascript beginnt bei 0 zu zählen, daher + 1 am Ende) und Tag zugeordnet. Hier gab's beim alten Code nun ein Problem. Denn statt 2000 stand da plötzlich 19100. Da dass so nicht sein kann, muss etwas geändert werden. Es reicht allerdings nicht nur, in der Ausgabe das 19 in 20 umzuändern, da anscheinend das Jahr 100 gezählt wurde. Zuerst bekommt der Ausdruck jahr=derzeit.getYear() noch ein -100. So nun stimmt's wieder. Jetzt taucht aber ein neues Problem auf. Zwei Nullen sind unsinnig, und der Computer lässt sie kurzerhand weg. Dann taucht allerding ein solches Datum auf: 200. Um die fehlende Null wieder zurück zubekommen, wird eine weitere Abfrage in die Funktion eingebaut. Durch if (jahr < 10) wird überprüft, ob das Datum nur einstellig ist und dann die Variable jahr um "0"+jahr erweitert. Ich habe dies zwar am Schluss eingebaut, aber es müsste auch weiter oben funktionieren. Als nächstes wird durch getHours, getMinutes und getSeconds Stunde, Minute und Sekunde zugewiesen. Die If-Abfrage sollte nun klar sein. Die in Anführungszeichen stehende Zeichenkette dient zur Ausgabe. Nach der Ausgabe im Formulartextfeld, das über den Eventhandler onclick ausgelöst wird, wird die Funktion nach Ablauf einer Sekunde erneut aufgerufen und die Zeit im Sekundentakt aktualisiert.

Anzeige testen:

 

Zurück zum Inhalt

Dropdownliste als Inhaltsverzeichnis

<SCRIPT LANGUAGE="JavaScript">
<!-- ;
function gehezu(form)
{
var nummer=form.select1.selectedIndex
if (form.select1.options[nummer] != 0)
{
form.select1.selectedIndex = 0;
window.location=form.select1.options[nummer].value;
document.forms[0].reset();
document.forms[0].elements[0].blur();
}
}
// end hide -->
</SCRIPT>
<FORM NAME="form1">
<SELECT NAME="select1" onChange="gehezu(form1)" SIZE=1>
<OPTION SELECTED VALUE=0> --- Auswahlmenü ---
<OPTION VALUE="Hauptseite.htm">Hauptseite
<OPTION VALUE="news.html">Was ist neu
<OPTION VALUE="download.htm">Downloadseite
</SELECT>
</FORM>


Es wird eine Funktion mit Namen gehezu definiert, die als Parameter eine Form erwartet, dann wird der Variablen "nummer" der ausgewählte Eintrag eines Dropdownfeldes zugeordnet, im Anschluß über eine If-Schleife der Wert der Variablen abgefragt (selectedIndex beginnt bei Null zu zählen, wenn der erste Eintrag " --- Auswahlmenü -- " ausgewählt soll nichts geschehen, deshalb lautet die Bedingung "wenn ausgewählte Nummer ungleich (!=) Null dann ..."). In der zweiten Zeile nach der If-Schleife wird "window.location.href" eine Adresse aus den im Forumular (value=) aufgelisteten Verweisen zugeordnet. Die beiden Zeilen  document.forms[0].reset(); document.forms[0].elements[0].blur();" dienen dazu, die Dropdownliste wieder auf den Ausgangswert zurückzusetzen (reset) und den Focus zu entfernen (blur). Der Netscape Navigator ignoriert dies leider, daher die Zeile "form.select1.selectedIndex = 0;", die den Cursor auf den Index 0 (= --- Auswahlmenü --- ) zurücksetzt.

Zurück zum Inhalt

Messagebox

In solchen Messageboxen können Informationen, Begrüßungen, Warnungen oder Ähnliches ausgegeben werden. Diese Meldungen müssen dann mit einem OK bestätig werden, damit sie wieder verschwinden. Diese Fenster können bei zu häufigem nervend werden. Auch sollte man dem Netscape Navigator zu liebe die Funktion im head unterbringen, da es sonst passieren kann, dass man beim Mouseover-Effekt keine Meldung erhält.

<SCRIPT LANGUAGE="JavaScript">
<!-- ;
function warnung()
{
alert("Dass du nicht hören kannst!")
}
// end hide -->
</SCRIPT>
<body>
<a href="#" onmouseover="warnung()">Klick mich ja nicht an!</a>
</body>

Hier wird eine function definiert, die wieder einen beliebigen Namen zugewiesen bekommt. Wenn der Name mit einer Zahl beginnt, funktioniert es nicht. Man sollte auch Sonderzeichen unterlassen.Die runden Klammern nach over dienen zur Übergabe der Parameter. In diesem Beispiel bleibt der Bereich noch leer, die Klammern müssen aber trotzdem geschrieben werden. Anschließend folgt zwischen den geschweiften Klammern der eigentliche Programmteil. Durch das vordefinierten Worte alert wird eine Messagebox ausgegeben, wobei der in den runden Klammern und in Anführungszeichen stehende Text im Meldungsfenster erscheinen wird. In der fertigen Seite wird die Funktion Auslößer durch einen Eventhandler, hier mouseOver innerhalb eines Verweises aufgerufen.
Zum Testen. Ich wette, du schafst es nicht den Link zu drücken *fg*

Klick mich ja nicht an! 

About Me | Site Map | Privacy Policy | Contact Me | last update: © Florian Ercevic