Kann sich eine Schlange selber aufessen?
Dominic
- dhtml
0 Tzadkiel0 Sönke Schnoor0 Dominic
Was haben SelfHTML-Junkies am liebsten??? Natürlich Leute, die unmengen Code posten. Wer aber trotzdem Lust hat, sich hier durchzuquälen, solle doch bitte sagen, wo der Fehler liegt!
Wer den Code in IE5 ausprobiert (im Moment nur die ersten beiden Rubriken), der wird feststellen, daß das Aufrufen des zweiten Punktes bei gleichzeitig aktivem ersten Punkt in eine Endlosschleife mündet, aber wieso????
Die Positionierung des zweiten Menüpunktes ist übrigens egal, das wird noch überarbeitet!
Super-Vielen Dank!!!
Dominic
<html>
<head>
<title>AbiSelect</title>
<style type="text/css">
p { font-size:14pt; color:#787A9B; font-family:tahoma; font-weight:800; letter-spacing:0px; position:absolute; }
</style>
</head>
<body background="select.jpg" bgcolor="#000000" text="#FFFFFF" link="#000000" vlink="#000000" alink="#000000" scroll="no">
<p id="Chat" style="top:75px; left:5px; z-index:2;" onClick="javascript:alpha=window.setInterval('AbiChat()',10);">CHAT</p>
<p id="Forum" style="top:75px; left:75px; z-index:2;" onClick="javascript:alpha=window.setInterval('AbiForum()',10)">FORUM</p>
<p id="Contact" style="top:75px; left:165px; z-index:2;" onClick="javascript:alpha=window.setInterval('AbiContact()',10)">CONTACT</p>
<p id="Download" style="top:75px; left:275px; z-index:2;" onClick="javascript:alpha=window.setInterval('AbiDownload()',10)">DOWNLOAD</p>
</body>
<script language="JavaScript">
k=0,l=0,m=0,n=0;
stat=4;
function AbiChat()
{
if(stat==0)
{
--k;
if(k>=5){document.all.tags("p")[0].style.fontSize=14+((k-5)*2)+"pt";}
if(k>=5){document.all.tags("p")[0].style.left=5;}
if(k<=10){document.all.tags("P")[0].style.top=75-(k*7);}
if(k==0){stat=4; window.clearInterval(alpha);}
}
else
{
if(stat==1){alpha=window.setInterval("AbiForum()",10);}
if(stat==2){alpha=window.setInterval("AbiContact()",10);}
if(stat==3){alpha=window.setInterval("AbiDownload()",10);}
if(stat==4)
{
++k;
if(k>=5){document.all.tags("p")[0].style.fontSize=14+((k-5)*2)+"pt";}
if(k>=5){document.all.tags("p")[0].style.left=5;}
if(k<=10){document.all.tags("P")[0].style.top=75-(k*7);}
if(k==20){stat=0; window.clearInterval(alpha);}
}
}
}
function AbiForum()
{
if(stat==1)
{
--l;
if(l>=5){document.all.tags("p")[1].style.fontSize=14+((l-5)*2)+"pt";}
if(l>=5){document.all.tags("p")[1].style.left=5;}
if(l<=10){document.all.tags("P")[1].style.top=75-(l*7);}
if(l==0){stat=4; window.clearInterval(alpha);}
}
else
{
if(stat==0){alpha=window.setInterval("AbiChat()",10);}
if(stat==2){alpha=window.setInterval("AbiContact()",10);}
if(stat==3){alpha=window.setInterval("AbiDownload()",10);}
if(stat==4)
{
++l;
if(l>=5){document.all.tags("p")[1].style.fontSize=14+((l-5)*2)+"pt";}
if(l>=5){document.all.tags("p")[1].style.left=5;}
if(l<=10){document.all.tags("P")[1].style.top=75-(l*7);}
if(l==20){stat=1; window.clearInterval(alpha);}
}
}
}
</script>
</html>
Hallo,
auch wenn ich den Code noch nicht ausprobiert habe, eins fällt mir gleich auf, ersetze doch die vielen
if Anweisungen durch 2 Switch Anweisungen. Das macht den Code übersichtlicher und auch
besser debugbar.
CU Tzadkiel
Hi Dominic!
...der wird feststellen, daß das Aufrufen des zweiten Punktes bei gleichzeitig aktivem ersten Punkt in eine Endlosschleife mündet, aber wieso????
Tja, weil Du da einen kleinen Logikfehler drinne hast.
Bei einen _Klick_ auf Forum löst Du Dein erstes Intervall aus mit...
alpha=window.setInterval('AbiForum()',10).
Er läuft dann geradewegs nach...
if(stat==0){alpha=window.setInterval("AbiChat()",10);}
wo Du jetzt Dein zweites Intervall startest. Während dieses zweite Intervall läuft und den Chat-Text runterscrollt, läuft Dein erstes Intervall munter weiter und ruft nach jeweils weiteren 10 Millisekunden die Funktion AbiChat() erneut auf, die wiederum im if(stat==0)... Zweig landet landet und dort einen neuen Intervall startet usw.
Irgendwann hast Du dann so viele Intervalle am laufen, das er komplett abschmiert. (Jedenfalls bei mir)
Du wirst also wohl nicht davon herumkommen Dein erstes Intervall so lange abzuschalten, bis Dein zweites Intervall den Chat-Text runterscrollt hat.
BTW. Wieso fragst Du eigentlich immer zwei mal nacheinander die gleiche Bedingung ab?
if(l>=5){document.all.tags...
if(l>=5){document.all.tags...
Gruß
Sönke
Hab das ganze nochmal komplett neu gebastelt, klappt jetzt super, und ist überraschend kurz.
Trotzdem Danke!!!