Problem mit programmiertem Textticker
ThePrimas
- javascript
Ich hab da so ein Problem, und zwar hab ich mir einen Textticker programmiert weil ich nicht marguee benutzen wollte. Der funktioniert auch schön nur ist das Problem wenn ich ihn mit ihn mehrmal hinternander laufen lasse dann läuft der Text immer schneller durch, was er ja nicht soll.
wer nett wenn mir einer dabei helfen könnte.
Gruß
ThePrimas
P.S.: Der Quelltext=
<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;
ticker();
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()" 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>
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
Hui, jetzt funktioniert es ^-^
Ein ganz großes Danke an dich Denito!!!
Gruß
ThePrimas