Avatar billede virus Nybegynder
20. august 2004 - 15:37 Der er 5 kommentarer og
1 løsning

setInterval osv

<div id="divlayer">&nbsp;</div>
<script>
    var arrtext = new Array("hej1", "hej2", "hej3");
    var arrtext2 = new Array("hej1", "hej2", "hej3");


    function doslide(startindex, endindex, interval) {
        var intstartindex = startindex;
        var intendindex  = endindex;
        var intinterval  = interval;

        if (intstartindex == intendindex+1) {
            alert('slide færdigt!');
            clearInterval(intid);
        } else {
            document.getElementById('divlayer').innerHTML = arrtext[intstartindex];
            intid = setInterval("doslide(intstartindex++, intendindex, intinterval++)", intinterval);
        }
    }
</script>

<a href="#" onclick="doslide(0,2,8000);">Start slideshow</a>



Hvad er der galt?
Avatar billede roenving Novice
20. august 2004 - 15:41 #1
<div id="divlayer">&nbsp;</div>
<script>
    var arrtext = new Array("hej1", "hej2", "hej3");
    var arrtext2 = new Array("hej1", "hej2", "hej3");


    function doslide(startindex, endindex, interval) {
        if (startindex == endindex+1) {
            alert('slide færdigt!');
            clearInterval(intid);
        } else {
            document.getElementById('divlayer').innerHTML = arrtext[startindex];
            intid = setInterval("doslide(" + ++startindex + "," + endindex + "," + ++interval + ")", interval);
        }
    }
</script>

<a href="#" onclick="doslide(0,2,8000);">Start slideshow</a>
Avatar billede weaponx Nybegynder
20. august 2004 - 15:41 #2
har du et startindex, som hedder 0?
Avatar billede virus Nybegynder
20. august 2004 - 15:44 #3
Svar lige roenving :o)

Yderligere roenving, så problemet er at jeg var'e nogen variabler?
og så selvfølgelig måden hvorpå elementer i den rekursive funktion sættes?

:o)
Avatar billede roenving Novice
20. august 2004 - 15:52 #4
Nej, det er ikke et problem, at du laver nogle lokale variable i funktionen, men overflødigt, da argumenter i forvejen er lokale !-)

-- det vigtige er, at det, som står inde i en setInterval/-Timeout først fortolkes, når tiden er gået, dvs. at man ikke kan bruge variable, men skal have dem oversat, når man kalder timeout'en !-)

-- og så bør du forøvrigt ikke bruge setInterval, da du vil vedblive med at oprette nye tællere, som aldrig bliver stoppet, men bruge setTimeout i stedet:

            intid = setTimeout("doslide(" + ++startindex + "," + endindex + "," + ++interval + ")", interval);

-- og velbekomme '-)
Avatar billede virus Nybegynder
23. august 2004 - 10:00 #5
Jeg siger tak for hjælpen :o)
Avatar billede roenving Novice
24. august 2004 - 02:11 #6
Tak for point ;~}
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