JavaScript setInterval / clearInteval Beispiel 3: Ticker mit Array

<span id="zeilenticker" style="width:20em;">-</span><br>
<a href="javascript:zeilenticker ()" title="">Ticker los!</a>
<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Array mit Meldungen, die vom Ticker ausgegeben werden sollen
var meldungen = new Array ('Erste Meldung hat diesen Inhalt',
         'Zweite Meldung hat jenen Inhalt',
         'Dritte Meldung ist die Letzte');

// Funktion zur Darstellung eines Texttickers, der in einem Array
// gespeicherte Meldungen nacheinander Zeichenweise in einem HTML-Element
// ausgibt. Bei jedem Durchgang des Intervalls wird ein weiteres Zeichen
// der aktuellen Meldung ausgegeben. Ein Intervall ist nach Ablauf eines
// Timeouts von 100ms abgelaufen. Beim Aufruf der Funktion werden keine
// Parameter angegeben. Intern ruft sich die Funktion mit der Meldungsnummer
// der darzustellenden Meldung jeweils über einen neuen Intervall auf.
function zeilenticker (meldung) {
  // Wurde das Array mit den Tickermeldungen im Script-Code definiert
  // und enthält das Array auch mindestens einen String?
  if ((typeof meldungen != 'object') ¦¦ meldungen.length == 0) {
    // Ist dem nicht so, wird die Funktion mit einer Fehlermeldung
    // abgebrochen und auh kein Intervall gestartet.
    alert ('Array mit Meldungen ist nicht definiert oder leer!');
    return;
  }
  // Wurde der Funktion kein Parameter mit dem Index einer Meldung angegeben?
  // Dies sollte nur dann der Fall sein, wenn die Funktion vom Benutzer
  // aufgerufen wird. Die Intervallgesteuerten Aufrufe geben den Index der
  // aktuell vom Ticker genutzten Meldung an.
  if (typeof meldung == 'undefined') {
    // Wir sind beim ersten Aufruf der Funktion und testen, ob Meldungen im
    // Array abgelegt sind.
    if (meldungen.length > 0) {
      // Startwert ist die erste Meldung im Array (Indexposition 0)
      // Die Position, bis zu der das String im nächsten Aufruf ausgegeben
      // werden soll wird initialisiert (beim ersten Durchgang nur das
      // erste Zeichen der ersten Meldung ausgeben).
      position = 0;
      // Starten des Intervalls in zeitlichen Abständen von 100ms
      tickerinterval = window.setInterval ('zeilenticker(0)', 100);
    }
  }
  else {
    // Ausgabe des Teilstrings von Indexposition 0 bis zum in position gespeicerten
    // Indexwert.  Die Position im String wird dabei für den nächsten Durchgang NACH der
    // Ausgabe um eins erhöht damit dann ein Zeichen mehr ausgegeben wird.
    document.getElementById ('zeilenticker').firstChild.data = meldungen[meldung].substr (0, position++);
    // Wurde bereits das letzte Zeichen der Meldung mit Indexposition meldung ausgegeben?
    if (position - 1 == meldungen[meldung].length) {
      // Positionsindex zurücksetzen...
      position = 0;
      // und Intervall zur Ausgabe der aktuellen Meldung beenden.
      window.clearInterval (tickerinterval);
      // Wurden noch nicht alle Meldungen im Array ausgegeben?
      if (meldung + 1 < meldungen.length)
        // Dann muss ein neuer Intervall gestartet werden, der die nächste
        // im Meldungsarray gespeicherte Meldung zeichenweise ausgibt.
        tickerinterval = window.setInterval ('zeilenticker(' + (meldung + 1) + ')', 100);
    }
  }
}
// -->
</script>

-
Ticker los!


Fatal error: Uncaught Error: Call to undefined function ereg() in /homepages/26/d102044405/htdocs/_WEB_FORUM_EVO_/forum_last.php:6 Stack trace: #0 {main} thrown in /homepages/26/d102044405/htdocs/_WEB_FORUM_EVO_/forum_last.php on line 6


¬ Insolvenzrecht