/ 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
[JS] setTimeout
Fra : Steen


Dato : 29-07-04 09:52

Jeg vil gerne have et element til at loope igennem nogle farver, som jeg har
defineret i et array:

function skift(n,i)
{
document.all('td'+n).style.backgroundColor=fade[i];
}


function fadeout(n) {
for (i=16 ; i>=1; i--)
{
setTimeout("skift("+n+","+i+")",250);
}
}

Men setTimeout virker ikke efter hensigten. Der er 16 farver i alt, og den
skulle gerne skifte én farve hvert 250. millisekund. Det skulle altså tage 4
sekunder at loope alle 16 farver igennem.

Men nu sker der det, at 250 ms efter at fadeout bliver kaldt, looper den det
hele igennem på et øjeblik. Den venter altså 250 ms før det første skift,
men ikke de efterfølgende. Hvad gør jeg galt?

Mvh Steen



 
 
Niels S (29-07-2004)
Kommentar
Fra : Niels S


Dato : 29-07-04 10:10

Steen wrote in dk.edb.internet.webdesign.clientside:
> Jeg vil gerne have et element til at loope igennem nogle farver, som jeg har
> defineret i et array:
>
> function skift(n,i)
> {
> document.all('td'+n).style.backgroundColor=fade[i];
> }
>
>
> function fadeout(n) {
> for (i=16 ; i>=1; i--)
> {
> setTimeout("skift("+n+","+i+")",250);
> }
> }
>
> Men setTimeout virker ikke efter hensigten. Der er 16 farver i alt, og den
> skulle gerne skifte én farve hvert 250. millisekund. Det skulle altså tage 4
> sekunder at loope alle 16 farver igennem.
>
> Men nu sker der det, at 250 ms efter at fadeout bliver kaldt, looper den det
> hele igennem på et øjeblik. Den venter altså 250 ms før det første skift,
> men ikke de efterfølgende. Hvad gør jeg galt?
>
> Mvh Steen
>
>


function skift(n,i)
{
document.all('td'+n).style.backgroundColor=fade[i];
}


function fadeout(n) {
for (i=16 ; i>=1; i--)
{
setTimeout("skift(n,i)",250);
}
}

Nu skulle det gerne virke!

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

Martin Hintzmann And~ (29-07-2004)
Kommentar
Fra : Martin Hintzmann And~


Dato : 29-07-04 10:21

Steen wrote:
> Jeg vil gerne have et element til at loope igennem nogle farver, som jeg har
> defineret i et array:
>

[snip kode]

>
> Men setTimeout virker ikke efter hensigten. Der er 16 farver i alt, og den
> skulle gerne skifte én farve hvert 250. millisekund. Det skulle altså tage 4
> sekunder at loope alle 16 farver igennem.
>
> Men nu sker der det, at 250 ms efter at fadeout bliver kaldt, looper den det
> hele igennem på et øjeblik. Den venter altså 250 ms før det første skift,
> men ikke de efterfølgende. Hvad gør jeg galt?
>

Det er klart du har jo 16 timeouts liggende og venter på at blive kørt
samtidigt efter 250ms.

Så du skal huske at gange tidsintervallet 250 med i.

function fadeout(n) {
   for (i=16 ; i>=1; i--)
   {
      setTimeout("skift("+n+","+i+")",250*i);
   }
}

--
Martin Hintzmann Andersen
http://www.hintzmann.dk/

Steen (29-07-2004)
Kommentar
Fra : Steen


Dato : 29-07-04 14:19

Martin Hintzmann Andersen wrote:

> Det er klart du har jo 16 timeouts liggende og venter på at blive kørt
> samtidigt efter 250ms.

Ach so, jeg vidste ikke, det var sådan det fungerede. Jeg troede bare, den
ventede så længe, før den kørte videre i scriptet. Men nu kan jeg
selvfølgelig godt se det hensigtsmæssige i, at det ikke er sådan fat. 1000
tak!

Mvh Steen



Christian Heyn (23-05-2005)
Kommentar
Fra : Christian Heyn


Dato : 23-05-05 12:16

Martin Hintzmann Andersen wrote in dk.edb.internet.webdesign.clientside:
> Steen wrote:
> > Jeg vil gerne have et element til at loope igennem nogle farver, som jeg har
> > defineret i et array:
> >
>
> [snip kode]
>
> >
> > Men setTimeout virker ikke efter hensigten. Der er 16 farver i alt, og den
> > skulle gerne skifte én farve hvert 250. millisekund. Det skulle altså tage 4
> > sekunder at loope alle 16 farver igennem.
> >
> > Men nu sker der det, at 250 ms efter at fadeout bliver kaldt, looper den det
> > hele igennem på et øjeblik. Den venter altså 250 ms før det første skift,
> > men ikke de efterfølgende. Hvad gør jeg galt?
> >
>
> Det er klart du har jo 16 timeouts liggende og venter på at blive kørt
> samtidigt efter 250ms.
>
> Så du skal huske at gange tidsintervallet 250 med i.
>
> function fadeout(n) {
>    for (i=16 ; i>=1; i--)
>    {
>       setTimeout("skift("+n+","+i+")",250*i);
>    }
> }
>
> --
> Martin Hintzmann Andersen
> http://www.hintzmann.dk/

Hej Martin

Undskyld jeg blander mig men det virker som om du har tjek på det med timeout.
Et lille spørgsmål:
Hvad nu hvis prosessen ikke skal køre 16 gange, men lige indtil næste
browserwindue åbnes?

Hilsen Christian

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

Martin Hintzmann And~ (23-05-2005)
Kommentar
Fra : Martin Hintzmann And~


Dato : 23-05-05 12:31

Christian Heyn wrote:
>
> Undskyld jeg blander mig men det virker som om du har tjek på det med timeout.
> Et lille spørgsmål:
> Hvad nu hvis prosessen ikke skal køre 16 gange, men lige indtil næste
> browserwindue åbnes?
>

Alt efter om du bruger setInterval() eller setTimeout(), så kan du
stoppe det igen med clearInterval() eller clearTimeout()


--
Martin Hintzmann Andersen
http://www.hintzmann.dk/

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

Månedens bedste
Årets bedste
Sidste års bedste