JavaScript clearInterval Beispiel 3: DIV-Element als Ticker (vertikales Scrollen)

  <style type="text/css">
  #tickerbox {
    border:1px solid #ccc;
    width:150px;
    min-height:100px; max-height:100px;
    padding:0 4px;
    overflow:hidden;
    clip:auto;
    text-align:justify;
  }
  #tickerbox div { margin:0; padding:0; }
  #tickerbox h1 {
    font-size:12px;
    margin:0; padding:0;
    font-weight:bold; text-decoration:underline;
  }
  #tickerbox p {
    font-size:10px;
    margin:0; padding:0;
  }
  </style>
  <!--[if IE]>
  <style type="text/css">
  #tickerbox div {
    /* Wichtig: Angabe der Größe des Scrollbereichs auf die
       eigenen Bedürfnisse anpassen - wird von IEs benötigt */
    height:400px;
  }
  </style>
  <![endif]-->
  <div id="tickerbox"><div>
    <h1>Ajax Forum</h1>
    <p>
      Ab sofort k&ouml;nne Sie bei uns rund um das Thema Ajax diskutieren.
      In unserem <a href="http://forum.evocomp.de/f9/" title="">Ajax Forum</a> haben Sie die Gelegenheit dazu.
    </p>
    <hr>
    <h1>MySQL Datenbank Forum</h1>
    <p>
      Datenbanken gewinnen bei der Programmierung von Internetseiten zunehmend an Bedeutung.
      Unser neues <a href="http://forum.evocomp.de/f14/" title="">MySQL Forum</a> soll Fragen zur Nutzung der Open-Source-Datenbank kl&auml;ren.
    </p>
  </div></div>
  <script language="javascript" type="text/javascript">
  <!-- // JavaScript-Bereich für ältere Browser auskommentieren
  // IEs brauchen definierte Variablen
  if (!window.getComputedStyle) {
    var tickerbox;
    var inter;
    var mtop;
    var tickerboxheight;
    var tickerheight;
  }

  // Funktion scrollt Tickermeldungen zyklisch von unten nach oben
  function scroll () {
    // Erster Aufruf der Funktion?
    if (typeof mtop == 'undefined') {
      // Element per ID ermitteln
      tickerbox = window.document.getElementById ('tickerbox');
      // Event-Handler für das Mouseover-Event
      // Dieser soll den Scrollvorgang anhalten,
      // wenn der Benutzer mit der Maus über die
      // Tickerbox fährt (etwa um einen Link anzuklicken)
      tickerbox.onmouseover = function () {
        window.clearInterval (inter);
      }
      // Ein weiterer Event-Handler für das Mouseout-Event
      // Dieser setzt den Scrollvorgang fort, wenn der
      // Benutzer die Maus aus dem Tickerbereich herausführt
      tickerbox.onmouseout = function () {
        inter = window.setInterval ('scroll()', 60);
      }
      // Computed Style unterstützt?
      if (window.getComputedStyle) {
        // Größe ermitteln
        var style = document.defaultView.getComputedStyle (tickerbox, null);
        tickerboxheight = parseInt (style.getPropertyValue ('min-height'));
        style = document.defaultView.getComputedStyle (tickerbox.firstChild, null);
        tickerheight = parseInt (style.getPropertyValue ('height'));
      }
      // Wird der IE eingesetzt, dann existiert currentStyle.
      else if (tickerbox.currentStyle) {
        // Auch hier wird die Größe des Tickerdivs ermittelt
        tickerboxheight = parseInt (tickerbox.currentStyle.minHeight);
        tickerheight = parseInt (tickerbox.firstChild.currentStyle.height);
      }
      // Oberer Margin initialisieren
      mtop = tickerboxheight;
    }
    // TopMargin und maximale Höhe des Tickerdivs anpassen
    tickerbox.firstChild.style.marginTop = mtop + 'px';
    tickerbox.firstChild.style.maxHeight = tickerboxheight - mtop-- + 'px';
    // Nach Abstand von 30 Pixel wird wieder von vorne begonnen
    if (mtop + tickerheight == -30)
      mtop = tickerboxheight;
  }
  
  // Scrollen der Tickerbox starten
  inter = window.setInterval ('scroll()', 60);
  // -->
  </script>

Das vom Script gelieferte Ergebnis wird im folgenden Block dargestellt. Wenn Sie mit der Maus über den Ticker fahren, dann stoppt dieser den Scrollvorgang. Verlassen Sie ihn wieder, so wird das Scrolling fortgesetzt. Auf diese Weise kann der Benutzer evtl. im Ticker enthaltene Links anklicken, ohne dass dies in einer Linkjagt ausartet. Auch kann der Besucher sich durch das Anhalten des Tickers mehr Zeit zum Lesen der Meldungen verschaffen.

Ajax Forum

Ab sofort könne Sie bei uns rund um das Thema Ajax diskutieren. In unserem Ajax Forum haben Sie die Gelegenheit dazu.


MySQL Datenbank Forum

Datenbanken gewinnen bei der Programmierung von Internetseiten zunehmend an Bedeutung. Unser neues MySQL Forum soll Fragen zur Nutzung der Open-Source-Datenbank klären.



¬ Insolvenzrecht