Avatar billede shjorth Nybegynder
21. oktober 2011 - 00:28 Der er 4 kommentarer og
1 løsning

setInterval til max 5 gange

Hejsa.
Jeg benytter mig af flg kode:

function depthRes(ddiv,fps,endTime,maxD) {
    var resultat = ((new Date().getTime()/1000) - endTime) * fps;

    if (resultat > maxD)
    { resultat = maxD;
    }
    var finalRes = number_format(resultat,2);
    document.getElementById(ddiv).innerHTML=finalRes;
}

Som jeg kalder med:

setInterval("depthRes('d<?=$s;?>',<?=$dd[$s];?>,<?=$et[$s];?>,<?=$mm[$s];?>)",2000);


Jeg skal på en måde udbygge denne funktion så setinterval stopper efter at have kørt 5 gange.

Kender i en god løsning til det ?

Takker
Avatar billede hansepeter2 Nybegynder
21. oktober 2011 - 00:45 #1
function depthRes(ddiv,fps,endTime,maxD,count) {
    var resultat = ((new Date().getTime()/1000) - endTime) * fps;

    if (resultat > maxD)
    { resultat = maxD;
    }
    var finalRes = number_format(resultat,2);
    document.getElementById(ddiv).innerHTML=finalRes;
    if(count < 5) callback(count+1);
}

function callback(count){
        setTimeout("depthRes('d<?=$s;?>',<?=$dd[$s];?>,<?=$et[$s];?>,<?=$mm[$s];?>, "+count+")",2000);
}

callback(1);
Avatar billede ysangkok Nybegynder
21. oktober 2011 - 00:47 #2
setInterval() returnerer et ID som du skal gemme. Du kan annullere intervaller med clearInterval(int).

Lav en global variabel som du tæller op hver gang funktionen bliver kaldt. Når tælleren overskrider grænsen annullerer du med clearInterval. Derfor skal du osse gemme ID'et globalt så du kan læse det i funktionen, så den kan annullere sig selv.
Avatar billede shjorth Nybegynder
21. oktober 2011 - 10:47 #3
Jeg har forsøgt mig med flg:

function depthResDo(ddiv,fps,endTime,maxD,count) {
    var resultat = ((new Date().getTime()/1000) - endTime) * fps;

    if (resultat > maxD)
    { resultat = maxD;
    }
    var finalRes = number_format(resultat,2);
    document.getElementById(ddiv).innerHTML=finalRes;
    if(count < 5) depthRes(ddiv,fps,endTime,maxD,count+1);
}

function depthRes(ddiv,fps,endTime,maxD,count){
        setTimeout("depthResDo('"+ddiv+"','"+fps+"','"+endTime+"','"+maxD+"','"+count+"')",2000);
}

Men det ser ud til den kun kører een gang, og altså ikke de 5 som egentlig var meningen :(
Avatar billede jokkejensen Novice
21. oktober 2011 - 10:59 #4
for(i=1;i<6;i++)
{
setTimeout(func, 2000*i);
}

/J
Avatar billede shjorth Nybegynder
19. november 2011 - 16:54 #5
Endte med en betalt løsning, men takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester