09. august 2004 - 11:51Der er
6 kommentarer og 1 løsning
Modsat setTimeout.
Når man nu kan kalde en funktion efter en tid med onload="setTimeout('funktionxx()',10000);" kan man så ikke også standse den istedet efter 10 sek. Den skal gerne virke i de 10 første sekunder og så disables.
-- hvis du mener, at du skal køre en funktion med intervaller i 10 sekunder og så skal stoppe den starter du bare med at tildele den til en variabel, og så stopper du den ved at kalde clearTimeout:
intervalId = setInterval('funktion()',100);
-- og når de 10 sekunder er gået:
clearInterval(intervalId);
-- hvis du har en javascript-funktion, som looper rundt i noget, og du vil have den til at loope uendeligt indtil de 10 sekunder er gået, skal vi over i den boldgade erikjacobsen har fat i:
var endTime = null; function skalstandses(){ endTime = new Date().getTime() + 10000; while (....) { if(new Date().getTime()>endTime)return; //resten af funktionen ... } }
Ok. Det var mange gode indfald. Jeg har testet med følgende script, som er en snake. <SCRIPT LANGUAGE="JavaScript"> <!-- Begin var x, y; var step = 10; var flag = 0;
var message = " tester "; message = message.split(""); var xpos = new Array(); for (i = 0; i <= message.length - 1; i++) { xpos[i] = -50; } var ypos = new Array(); for (i = 0; i <= message.length - 1; i++) { ypos[i]= -50; } function handlerMM(e) { x = (document.layers) ? e.pageX : document.body.scrollLeft + event.clientX; y = (document.layers) ? e.pageY : document.body.scrollTop + event.clientY; flag = 1; } function makesnake() { if (flag == 1 && document.all) { for (i = message.length - 1; i >= 1; i--) { xpos[i] = xpos[i - 1] + step; ypos[i] = ypos[i - 1]; } xpos[0] = x + step; ypos[0] = y; for (i = 0; i < message.length - 1; i++) { var thisspan = eval("span" + (i) + ".style"); thisspan.posLeft = xpos[i]; thisspan.posTop = ypos[i]; } } else if (flag==1 && document.layers) { for (i = message.length - 1; i >= 1; i--) { xpos[i] = xpos[i - 1] + step; ypos[i] = ypos[i - 1]; } xpos[0] = x + step; ypos[0] = y; for (i = 0; i < message.length - 1; i++) { var thisspan = eval("document.span" + i); thisspan.left = xpos[i]; thisspan.top = ypos[i]; } } var timer = setTimeout("makesnake()", 10); } // End --> </script> <body onload="setTimeout('makesnake()',10000);" style="OVERFLOW-X: hidden; OVERFLOW-Y: scroll; WIDTH: 100%">
<SCRIPT LANGUAGE="JavaScript"> <!-- Begin for (i = 0; i <= message.length-1; i++) { document.write("<span id='span"+i+"' class='spanstyle'>"); document.write(message[i]); document.write("</span>"); } if (document.layers) { document.captureEvents(Event.MOUSEMOVE); } document.onmousemove = handlerMM; // End --> </script>
</body </html>
Den kunne jeg tænke mig kun skulle køre i 10 sekunder.
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.