denito: Problem mit programmiertem Textticker

Beitrag lesen

Hallo!

Das Problem bei deinem Script ist, dass die Funktion ticker() zweimal aufgerufen wird:
1. Du rufst sie immer dann auf, wenn die Funktion los() läuft.
2. In der Funktion ticker() wird sie ebenfalls über setTimeOut() aufgerufen.
Durch das mehrfache Aufrufen wird der Ticker nach jedem Durchlauf immer schneller.

Lösche den Aufruf ticker() in der Funktion los() und setze ihn in den Event-Handler onLoad.

Hier das komplette Listing, wie es funktioniert:

<html>
<head>
<title></title>
<meta name="author" content="ThePrimas">
<script language="JavaScript">
<!--
var text = "";
var anzeige = "";
var unterstrich = "";
var x = 1;
var y = 0;
var z = 0;
var rest = 0;
var leer = 0;
var leerersatz = 0;
var voll = 10;
var t = 0;

function los(){
text = " Wer hat Angst vorm Schwarzen Mann nanana nana na. . . . . . . .";
anzeige = "";
unterstrich = "";
x = 1;
y = 0;
z = 0;
rest = 0;
leer = 0;
leerersatz = 0;
voll = 10;

setTimeout("los()", 10000);
}

function ticker(){

anzeige = text.substr(0,x);
  x = x + 1;
  leer = leer + 1;
  leerersatz = leer;

while (leer <  voll) {
  unterstrich = unterstrich + " . .";
  leer = leer + 1;
  }
  anzeige = unterstrich + anzeige;
  leer = leerersatz;

if (anzeige.length > 10){
      y = anzeige.length - 10;
      z = anzeige.length - y;
      anzeige = anzeige.substr(y,z);
    }
  document.getElementById("lauf").firstChild.nodeValue = anzeige;

anzeige = "";
  unterstrich = "";
  rest = 0;

setTimeout("ticker()", 100);

}
//-->
</script>

</head>
<body onLoad="los();ticker()" marignwidth="0" marginheight="0" leftmargin="0" topmargin="0">
<basefont face="VERDANA,ARIAL,HELVETICA">
<table width="100%" height="100%">
  <tr>
    <td align="center" valign="middle">
      <table cellpadding="0" cellspacing="0">
        <tr>
          <td>
            <font size="1">
            <div id="lauf">. . . . .</div>
            </font>
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
</body>
</html>

Viele Grüße
denito