/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Hvordan laver man et delay i jscript
Fra : Kasper Vork Steffens~


Dato : 24-11-03 23:12

Hej

Nu har jeg læst et hav af forskellige web-sider uden at finde
svaret, som sikkert er banalt! 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....

function color()
{
for (hex=58;hex<255;hex+=3)
{
document.getElementById("div").style.color="rgb("+hex+","+hex+","
+hex+")";
setTimeout('color()', 200)
}
}

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Lasse Reichstein Nie~ (24-11-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 24-11-03 23:47

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

Kasper Vork Steffens~ (26-11-2003)
Kommentar
Fra : Kasper Vork Steffens~


Dato : 26-11-03 08:12

>Lasse Reichstein Nielsen wrote in dk.edb.internet.webdesign.clientside:
> Lad mig gætte: Maskinen går i knæ når du prøver den her kode?

Ja, noget i den stil

> Ok, her er så en løsning:

Tak for både løsning og den almindelige kodeopstramning. Det vil jeg straks
prøve.




--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste