Wie kann man in Javascript "for"-Schleifen verlangsamen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Bin zu faul das zu debuggen aber der Ansatz ist schon richtig. :) Allerdings setzt du in der Schleife 200 mal "sofort" einen Timeout in 1 Sekunde. D.  h. eine Sekunde später wird die Funktion bgColor 200 Mal aufgerufen. Was du eher willst ist: Ein mal inital aufrufen und dann ruft sich die Funktion an ihrem Ende über einen Timeout selber durch. Sinngemäß:

var a = 64; 
var b = 64; 
var c = 64;

function bgColor() {
    a++; b++; c++;
    document.body.style.backgroundColor= 'rgb(' + a + ',' + b + ',' + c + ')';
    if (a < 255) { // Abbruchbedingung damit es keine Endlosschleife gibt
        window.setTimeout('bgColor', 1000);
    }
}
bgColor();
fluffiknuffi  28.06.2015, 23:09

PS: Ich habe das nicht getestet.

0
Fexxi96 
Fragesteller
 28.06.2015, 23:24
@fluffiknuffi

Ok nice, ergibt in meinem Kopf Sinn .. bloß es passiert gar nichts. :(

0
Fexxi96 
Fragesteller
 28.06.2015, 23:26

Das ist die Lösung, man muss nur noch bei 

window.setTimeout('bgColor', 1000);
ein bgColor(); daraus machen! Danke!! ^^
0

Code nochmal:

    
        var a = 64;            b = 64;            c = 64;        function bgColor() {            a++;            b++;            c++;            document.body.style.backgroundColor= 'rgb(' + a + ',' + b + ',' + c + ')';        }        for (var i = 1; i < 200; i++) {            setTimeout(function alois(){                bgColor();            }, 1000)            document.write(a);        }
Fexxi96 
Fragesteller
 28.06.2015, 22:44

"function alois" = alois ist mein Testwort ^^

0

Hi. Was du da baust ist veralteter code. Verwende lieber jQuery oder eine andere Bibliothek zur dommanipulation. Dort würde das so aussehen: $(document).ready(function(){ $("#deinDomElm").delay(1000).animate( { "background": "#fff" }, 250); }); }); wenn fehler drin sind tut es mir leid, schreib das mit dem handy

Fexxi96 
Fragesteller
 29.06.2015, 13:29

Danke, das werde ich mir genauer anschaun.. Einfach JQuery einbinden und das schreiben? ^^

0
fluffiknuffi  29.06.2015, 14:24

Soweit ich weiß kann jQuery die background-Eigenschaft nicht von Haus aus animieren.

0

setTimeout(function(){deinCode();},1000); /*Somit wird deinCode() jede Sekunde abgerufen*/

Ich kenn mich mit Java Script nich sonderlich aus aber müsste es nich document.write(r) heißen?

Fexxi96 
Fragesteller
 28.06.2015, 22:46

document.write ist mein debug um zu testen ob die Schleife überhaupt funktioniert..

0
DerTod99  28.06.2015, 22:51

Ich glaub nich das es was hilft, denn ich bezweifle das es was bringt die Geschwindigkeit des Farbwechselns zu ändern aber du kannst die Farben statt plus 1 z.B. einfach plus 0.1 rechnen.

1
Fexxi96 
Fragesteller
 28.06.2015, 22:52
@DerTod99

hab ich schon versucht, funktioniert nicht .. deswegen frage ich ob irgendwo ein Fehler ist D:

0
Fexxi96 
Fragesteller
 28.06.2015, 23:08
@DerTod99

Stimmt, ändert aber gar nichts.. :/

0