Schleifen und Timeouts
Tobias Beck
- javascript
Hallo, liebe Forumer/innen,
Ich sitze schon einige Zeit an dem Javascript unten das
später für die HTML Seite eines Votingscripts verwendet
werden soll.
Auf die folgende Lösung bin ich gekommen, aber das ist
meiner Ansicht nach etwas zu kompliziert und so gleichmäßig
wie es sollte läuft es auch nicht. Kennt einer von euch
einen besseren Lösunsweg?
<html>
<head>
<script language="JavaScript">
<!--
function MachGross() {
if (document.images) {
Balken.width+=1;
window.document.Balken.width=Balken.width;
}
}
function Schleife() {
for (i=1; i<10; i++ ) {
window.setTimeout("MachGross()",100);
window.setTimeout("MachGross()",200);
window.setTimeout("MachGross()",300);
window.setTimeout("MachGross()",400);
window.setTimeout("MachGross()",500);
window.setTimeout("MachGross()",600);
window.setTimeout("MachGross()",700);
window.setTimeout("MachGross()",800);
window.setTimeout("MachGross()",900);
}
}
//-->
</script>
</head>
<body text="#FFFFFF" bgcolor="#000000">
<img src="yellow.gif" height="12" border="0" name="Balken">
<br>
<input type="Button" onClick="Schleife()" value="größer">
</body>
</html>
Vielen Dank im Voraus
Ciao,
Tobi
<img src="http://www383.l7.xodox.com/87ba30.gif" alt="Tobi`s Welt" style="cursor:hand;" onmouseup="window.location.href='http://www383.l7.xodox.com'" onmouseover="window.status='http://www.tobi-beck.de';return true;" onmouseout="window.status='';return true">
Hi!
Vielleicht schon mal eine kleine Verbesserung in der Schleife:
function Schleife()
{
for (i=1; i<10; i++)
for (j=1; j<10; j++)
window.setTimeout("MachGross()",j*10);
}
MfG Simon
Hallo Simon,
function Schleife()
{
for (i=1; i<10; i++)
for (j=1; j<10; j++)
window.setTimeout("MachGross()",j*10);
}
Das sieht zwar schöner aus, aber der Aufbau des Balkens geht jetzt
leider noch schneller und ruckelt noch mehr. Desshalb hatte ich es
auch so kompliziert gelöst.
Vieleicht kennst du den Vote bei giga.de (ich weiß das ist ein
Applet) aber vom Prinzip her stelle ich es mir so vor.
Ciao,
Tobi
<img src="http://www383.l7.xodox.com/87ba30.gif" alt="Tobi`s Welt" style="cursor:hand;" onmouseup="window.location.href='http://www383.l7.xodox.com'" onmouseover="window.status='http://www.tobi-beck.de';return true;" onmouseout="window.status='';return true">
Hallo Tobias,
function Schleife() {
for (i=1; i<10; i++ ) {
window.setTimeout("MachGross()",100);
[...]
window.setTimeout("MachGross()",900);
}
}
Das sieht gar nicht gut aus. Du startest ja 10 mal die gleichen Zeitwerte.
Richtig wäre wohl for(i=0;i<90;i++) setTimeout("MachGross()",i*10); aber
dafür muss der Browser 90 Timeraufrufe verkraften.
Besser geht es wohl mit
timer=setInterval("MachGross()",10);
das ruft MachGross() alle 10 ms auf. Nun soll ja nach 90 durchläufen
Schluss sein:
anzahl=0;
function MachGross()
{
if(++anzahl>90)
clearInterval(timer);
// ...
}
Gruss,
Carsten
Hallo Carsten,
Vielen Dank, diesen Interval Befehl habe ich gebraucht. Jetzt läuft
das Script dank Dir einwandfrei mit traumhafter gleichmäßigkeit *g*
Ciao,
Tobi