Tobias Beck: Schleifen und Timeouts

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">

  1. 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

    1. 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">

  2. 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

    1. 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