Kasper Vork Steffensen <kasper@vork-steffensen.dk> writes:
> Nu har jeg læst et hav af forskellige web-sider uden at finde
> svaret, som sikkert er banalt!
Faktisk ikke.
> Jeg har en lille Jscript
> for-løkke, hvor jeg gerne vil indbygge et delay af xx
> millisekunder. Har kigget på setInterval og setTimeout men har
> ikke kunnet få noget til at virke....
Der er ikke nogen "sleep" funktion i Javascript, som ellers er det du
gerne vil have. Desværre, det ville ellers give god mening.
Du skal bruge setTimout eller setInterval, men du bliver nødt til
at kode for-løkken selv.
>
> function color()
> {
> for (hex=58;hex<255;hex+=3)
> {
> document.getElementById("div").style.color="rgb("+hex+","+hex+","
> +hex+")";
> setTimeout('color()', 200)
Funktionen setTimeout returnerer omgående. Den har bedt om at dens
første argument skal udføres om 200 millisekunder, men selv kaldet til
setTimeout returnerer så med det samme. Derefter skifter du farven
igen og kalder setTimeout igen, ialt 66 gange. Efter 200 millisekunder
bliver color så kaldt igen *66 gange*. Og hvert kald beder om at få den
kaldt igen 66 gange. Eksponentiel vækst!
Lad mig gætte: Maskinen går i knæ når du prøver den her kode?
Ok, her er så en løsning:
function color() {
var color = 58;
var elemStyle = document.getElementById("div").style;
function setColor() {
elemStyle.color="rgb("+color+","+color+","+color+")";
color += 3;
if (color < 255) {
setTimeout(setColor,200);
}
}
setColor();
}
Vi bruger en indre funktion så den kan se den lokale variabel "color".
Vi finder også document.getElementById("div") i forvejen i stedet for
at gøre det i hvert kald.
Derefter kalder vi funktionen setColor der sætter farven, og bagefter
beder den om selv at blive kaldt igen om 200 ms, indtil farven er
blevet hvid.
Held og lykke.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'