[Beschreibung] [Quelltext] [Erläuterung] [Übung] [Referenz]

Laufschriften




Beschreibung

Es werden unterschiedliche Laufschriften zur Auswahl gestellt.

Quelltext


<head>
<script language="JavaScript">
<!--
  timer=null;
  text="";
  wahl="";
  ll=0;
  ii=0;
  function start(cc) {
    wahl=cc;
    if(cc == '1') {
      start1("Das ist eine Laufschrift + "+
        "Erstellt mit JavaScript + "+
        "Das koennen Sie auch !");
    } else if(cc == '2') {
      start2("Das ist ein relativ kurzer Text   ");
    } else {
      document.form1.text1.value="schau mal in die Status-Zeile !"
      start3("ich hasse Lauftexte in der Status-Zeile !   ");
    }
  }
  function start1(cc) {
    text=cc;
    ll=text.length;
    ii=0;
    lauf1();
  }
  function lauf1() {
    if(wahl != '1')return;
    document.form1.text1.value=text.substring(ii,ll)+" "+text.substring(0,ii);
    ii++;
    if(ii > ll)ii=0;
    timer=setTimeout("lauf1()", 100);
  }
  function start2(cc) {
    text=cc;
    ll=text.length;
    ii=0;
    lauf2();
  }
  function lauf2() {
    if(wahl != '2')return;
    document.form1.text1.value=text.substring(0,ii);
    ii++;
    if(ii > ll)ii=0;
    timer=setTimeout("lauf2()", 100);
  }
  function start3(cc) {
    text=cc;
    ll=text.length;
    ii=0;
    lauf3();
  }
  function lauf3() {
    if(wahl != '3')return;
    window.status=text.substring(0,ii);
    ii++;
    if(ii > ll)ii=0;
    timer=setTimeout("lauf3()", 200);
  }
  function stop() {
    wahl='0';
    if(timer != null) {
      clearTimeout(timer);
      timer=null;
    }
  }
//-->
</script>
</head>
<body onLoad="start('1')">
<form name="form1">
<input type="text" size=50 name="text1" value=""><br>
<input type="button" value="Start 1" onClick="start('1')"><br>
<input type="button" value="Start 2" onClick="start('2')"><br>
<input type="button" value="Start 3" onClick="start('3')"><br>
<input type="button" value="Stop"    onClick="stop()">
</form>
</body>

Erläuterung

Die Funktion "start1" bewirkt das erstmalige Starten der Funktion "lauf1"; Eingabeargument für "start1" ist die Zeichenkette, die als Lauftext angezeigt werden soll. Die eigentliche Anzeige übernimmt "lauf1". Am Ende von "lauf1" wird ein Timer gesetzt, der nach 100 Millisekunden die Funktion "lauf1" erneut aufruft.
Entsprechend arbeiten die Funktionen "start2" und "lauf2" sowie "start3" und "lauf3" zusammen.
Bei Betätigung des "Stop"-Knopfes wird die Funktion "stop" aufgerufen. In "stop" wird ein eventuell gesetzter Timer gelöscht; so daß der Lauftext stehen bleibt.

Übung

Erstellen Sie ein Textfeld, in dem laufend (z.B. alle 3 Sekunden) die aktuelle Uhrzeit angezeigt wird.
[
Lösung]


Referenz

[
string-Objekt] [substring] [indexOf] [lastIndexOf] [charAt] [toLowerCase] [toUpperCase]
[setTimeout] [clearTimeout]

string

Ein string-Objekt wird automatisch erzeugt wenn entweder einer Variablen eine Zeichenkette zugewiesen wird oder wenn mit einer expliziten von Hochkomma eingeschlossenen Zeichenkette gearbeitet wird.
Einzige Eigenschaft des string-Objektes ist length, die Länge der Zeichenkette.
Eine ganze Reihe von Methoden des string-Objektes dienen dazu, bei einer Ausgabe der Zeichenkette mit "document.write()" die Zeichenkette in bestimmte HTML-Tags einzuschließen :
MethodeBeispielWirkung
anchor()"anchor".anchor("anker")
big()"big".big()
blink()"blink".blink()
bold()"bold".bold()
fixed()"fixed".fixed()
fontcolor()"color".fontcolor("#00ff00")
fontsize()"size".fontsize("+2")
italics()"italics".italics()
link()"link zum anker".link("#anker")
small()"small".small()
strike()"strike".strike()
sub()"sub".sub()
sup()"sup".sup()
Also z.B. die Anweisungen
var str="Zeichenkette";
document.write(str.bold());
bewirken das gleiche wie eine HTML-Sequenz der Form
<b>Zeichenkette</b>.
Weitere Methoden des string-Objektes sind substring(), indexOf(), lastIndexOf(), toLowerCase() und toUpperCase():

substring

substring ist eine Methode des string-Objekts. Mittels substring ist es möglich, aus einer Zeichenkette einen Teilbereich zu übernehmen. Zum Beispiel:
var str1="Zeichenkette";
var str2=str1.substring(pos1, pos2);
substring benötigt 2 Übergabeparameter: der erste Parameter ist ein Index auf das erste Zeichen, das zur neuen Zeichenkette gehören soll; der 2 Parameter ein Index auf das erste Zeichen, das nicht mehr zur neuen Zeichenkette gehören soll. Die Indizierung beginnt wie üblich bei 0. Wenn im angegebenen Beispiel für "pos1" der Wert "7" und für "pos2" der Wert "10" eingesetzt wird, so wird als Ergebnis "ket" geliefert (Buchstaben-Index 7 bis 9 von "str", wobei Index "0" auf das erste Zeichen zeigt). Die Parameter "pos1" und "pos2" dürfen auch vertauscht werden: der kleinere Wert wird immer als Anfang, der größere Wert als Ende interpretiert.

indexOf

indexOf ist eine Methode des string-Objektes. Mittels indexOf ist es möglich, die Position des (ersten) Auftretens einer Teilkette innerhalb einer Zeichenkette zu bestimmen. Zum Beispiel:
var str1="Zeichenkette";
var pos1=str1.indexOf("ket");
Es wird in der Zeichenkette "str" nach der Teilkette "ket" gesucht. Das Ergebnis ist ein Index auf die entsprechende Position, wobei das erste Zeichen den Index "0" hat. Im angegebenen Beispiel erhält "pos1" den Wert "7".
Wenn die gesuchte Teilkette nicht gefunden wird, so wird als Ergebnis "-1" zurückgegeben.
Optional kann beim Aufruf von indexOf ein zweiter Parameter mitgegeben werden; dieser gibt dann an, ab welcher Position die Suche begonnen werden soll. Wenn z.B. in der Zeichenkette "str1" alle Teilketten "s" gesucht werden sollen, so geht das mit folgenden JavaScript-Anweisungen:
var str1="das ist ein test";
var kk=0;
var ii;
while((ii=str1.indexOf("s", kk)) >= 0) {
  document.write("Position ", ii,"<br>");
  kk=ii+1;
}

lastIndexOf

lastIndexOf liefert einen Index auf das letzte Auftreten der als Argument übergebenen Teilkette in der untersuchten Zeichenkette. Also z.B.
var str1="das ist ein test";
var kk=str1.lastIndexOf("s");
weist der Variablen "kk" den Wert 14 zu.
Laut
Laura Lemay arbeitet die lastIndexOf-Methode in Netscape 2.00 fehlerhaft. In der von mir (u.a.) verwendeten Version 2.01 tritt dieser Bug nicht mehr auf.

charAt

Die Methode charAt des string-Objektes liefert ein einzelnes Zeichen aus einer Zeichenkette. Eingabeargument ist der Index des gewünschten Zeichens (erstes Zeichen = "0"). Also z.B.
str1="abcdef";
str2=str1.charAt(3);
weist der Variablen "str2" den Wert "d" zu.

toLowerCase, toUpperCase

Diese beiden Methoden dienen dazu, sämtliche in einer Zeichenkette enthaltenen Buchstaben entweder in Kleinbuchstaben (toLowerCase) oder in Großbuchstaben (toUpperCase) umzuwandeln.

Neue Methoden des string-Objektes in Version 1.2 finden Sie auf Seite 33.


setTimeout

setTimeout und clearTimeout sind Methoden des window-Objektes. Der prinzipielle Aufruf von setTimeout ist
timerId=setTimeout(Ausdruck, msec)
Dabei gibt der Ausdruck an, welche Aktion durchgeführt werden soll und msec gibt an, wieviel Millisekunden bis zur Ausführung gewartet werden soll. Die Methode liefert als Ergebnis eine timerId, um den gesetzten Timer bei Bedarf mit clearTimeout vorzeitig löschen zu können.
setTimeout bewirkt das einmalige Abarbeiten des Ausdrucks. Wenn ein wiederholtes Abarbeiten alle msec Sekunden gewünscht wird, so muß im Ausdruck jeweils wieder ein neuer Timer gesetzt werden.

clearTimeout

clearTimeout bewirkt, daß ein mit setTimeout gesetzter Timer vorzeitig gelöscht wird, ohne daß die mit dem Timer verbundene Aktion ausgeführt wird. Ein Beispiel für den Aufruf ist:
clearTimeout(timerId)
wobei timerId das Ergebnis eines vorangegangenen Aufrufs von setTimeout ist.


Auf der nächsten Seite lernen ganze Seiten das Laufen.

home
Erstellt von © Uwe Brinkmann - bingo e.V. - Stand 08.03.97