Timur Ametov: Bildgröße mit einer Verzögerung ändern

Guten Abend,

ich hatte ohne großen Erfolg versucht, Größe eines Bildes mit einer Verzögerung zu ändern, ich meine damit, dass z.B. Breite des Bildes von 50 auf 100 mit zwischenschritten geändert wird
width = 50 -> 70 -> 85 -> 95 -> 100

Habe zwei Funktionen für diesen Zweck geschrieben

function changeicon(elem, width)
   {
        document.getElementById(elem).width=width;
   }
   function bigicon(elem)
   {
        window.setTimeout("changeicon('"+elem+"',55)", 100);
        window.setTimeout("changeicon('"+elem+"',75)", 100);
        window.setTimeout("changeicon('"+elem+"',85)", 100);
        window.setTimeout("changeicon('"+elem+"',95)", 100);
        window.setTimeout("changeicon('"+elem+"',100)", 100);
   }

Aber so wirklich funktioniert das nicht, zwischenschritte sind nicht zu sehen. Und der Code sieht außerdem schrecklich aus. Gibt es vielleicht bessere Alternativen???

Danke Euch,

Tim(ur)

  1. Hi,

    window.setTimeout("changeicon('"+elem+"',55)", 100);

    hierdurch wird *jetzt* ein Timer gestartet, der in 100 Millisekunden etwas tut.

    window.setTimeout("changeicon('"+elem+"',75)", 100);

    Hierdurch wird *jetzt* ein Timer gestartet, der in 100 Millisekunden etwas tut.

    window.setTimeout("changeicon('"+elem+"',85)", 100);

    Hierdurch wird *jetzt* ... Ich denke, Du erkennst den Punkt.

    Gibt es vielleicht bessere Alternativen???

    Entweder berechnest Du die Zeiträume anders, oder - da Du keine millisekundengenau Abarbeitung annehmen kannst - Du startest den nächsten Timeout erst dann, wenn dessen Vorgänger abgearbeitet ist.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Entweder berechnest Du die Zeiträume anders,

      Ja, das dachte ich mir auch. Hatte einfach mit größeren Zeitabständen experimentiert. Aber, wie gesagt, ich sehe nur das es sich in dieser Wartezeit nichts tut und dann am Ende wird das Bild auf Endgröße vergrößert.

      oder - da Du keine millisekundengenau Abarbeitung annehmen kannst - Du startest den nächsten Timeout erst dann, wenn dessen Vorgänger abgearbeitet ist.

      Und wie mache ich das?

      Timur

      1. Hi,

        Entweder berechnest Du die Zeiträume anders,
        Ja, das dachte ich mir auch. Hatte einfach mit größeren Zeitabständen experimentiert.

        mit größeren, aber identischen? Nun, ob Du jetzt in hundert Millisekunden oder jetzt in hundert Jahren fünf Dinge machst, ändert nichts daran, dass diese fünf Dinge ziemlich schnell hintereinander passieren.

        Aber, wie gesagt, ich sehe nur das es sich in dieser Wartezeit nichts tut und dann am Ende wird das Bild auf Endgröße vergrößert.

        Wenn Du alle hundert Jahre etwas tun möchtest, das erste mal in hundert Jahren, in wie vielen Jahren tust Du dann das zweite Ding?

        oder - da Du keine millisekundengenau Abarbeitung annehmen kannst - Du startest den nächsten Timeout erst dann, wenn dessen Vorgänger abgearbeitet ist.
        Und wie mache ich das?

        Den Aufruf von window.setTimeout() in die Funktion verlegen, von deren Abarbeitung der Aufruf abhängig ist. Also erst in hundert Jahren entscheiden, wie viele Jahre später Du das zweite Ding tun möchtest.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes