Avatar billede ste Nybegynder
09. august 2004 - 11:51 Der 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.
Avatar billede tlist Nybegynder
09. august 2004 - 11:56 #1
setTimeout(func, ms) kører kun en gang.
setInterval(func, ms) kører hvert ms milliseconds

Hvis du vil have en function kun skal køre i 10 sec skal du selv holde øje med tiden og så afbryde funktionen når der er gået 10 sec.
Avatar billede erikjacobsen Ekspert
09. august 2004 - 11:56 #2
Ikke direkte. Men i den funktion der skal standses laver du en if:

  function skalstandses() {
      while (....) {
        if (standses) return;
        ...
      }
  }

og så får du din setTimeOut til at sætte standses til true. Virker måske ;))
Avatar billede roenving Novice
09. august 2004 - 11:57 #3
Men med setTimeout opnår du jo netop, at den kun udføres een gang, og ikke mere !-)
Avatar billede roenving Novice
09. august 2004 - 12:17 #4
-- 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 ...
  }
}
Avatar billede ste Nybegynder
09. august 2004 - 12:35 #5
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.
Avatar billede ste Nybegynder
10. august 2004 - 21:25 #6
Kunne i hjælpe med at smide de 2 koder sammen.
Avatar billede ste Nybegynder
14. december 2004 - 06:17 #7
Jeg lukker her.
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