Avatar billede morten2001 Nybegynder
20. juli 2001 - 10:19 Der er 8 kommentarer

sleep!!

Hvordan får man et script til at \"sove\" 1sek før den starter forfra... jeg tænker på kommandoen

sleep();

i php...

Avatar billede tknudsen Nybegynder
20. juli 2001 - 10:27 #1
hvis du vil kalde den samme funktion igen og igen hver sekund kan du gøre det såleds:

var hTmr;

function loop()
{
  // do stuff

hTmr = window.setTimeout(1000,\'loop()\');

}

<body onload=\"loop()\">


for at stoppe det loop skal du kalde clearTimeout
Avatar billede tknudsen Nybegynder
20. juli 2001 - 10:28 #2
window.clearTimeout(hTmr);
Avatar billede morten2001 Nybegynder
20. juli 2001 - 10:36 #3
var done = 0;
var hTmr;
function loop()
{
if(done >= 5) { window.clearTimeout(hTmr); }
var done = done+1;
hTmr = window.setTimeout(1000,\'loop()\');
document.write(done);
}


hvad er der galt her.,, jeg vil have den til at tælle op til 5 med 1 sek mellemrum for hvert tal!
Avatar billede tknudsen Nybegynder
20. juli 2001 - 10:46 #4
Den document.write overskriver scriptet første gang det kører. Følgende virker:


var done = 0;
var hTmr;

function loop()
{
    if(done==4)
        window.clearTimeout(hTmr);
    else
        hTmr = window.setTimeout(\"loop()\",1000);
   
    done += 1;
    alert(done);

}
Avatar billede Slettet bruger
20. juli 2001 - 10:57 #5
Ja, tknudsen har ret, men i stedet for en alert-box, kan du skrive det i et <SPAN>-tag således (det virker dog kun i IE4+, så i Netscape får istedet bare en alert):
var done = 0;
var hTmr;

function loop()
{
    if(done==4)
        window.clearTimeout(hTmr);
    else
        hTmr = window.setTimeout(\"loop()\",1000);
   
    done += 1;

if (document.all) {
document.all.taeller.innerHTML = done
}
else {
alert(done);
}

}

Indsæt derefter <SPAN id=\"taeller\"></SPAN> der, hvor du vil have optællingen!
Avatar billede olebole Juniormester
21. juli 2001 - 18:51 #6
<ole>

var done = 0;
var hTmr;
function loop() {
    if (done==4) {
        window.clearTimeout(hTmr);
    }
    else {
        hTmr = window.setTimeout(\"loop()\",1000);
    }
    done += 1;
    if (document.all) {
          document.all.taeller.innerHTML = done
    }
    else if (document.layers) {
        doc = document.layers.taeler.document;
        doc.open();
        doc.write(done);
        doc.close();
    }
    else {
        document.getElementById(\"taeller\").innerHTML = done;
    }
}

...og så skal dit <span> positioneres absolut:
  <span id=\"taeller\" style=\"position:absolute;top:50px;left:150px;\"></span>
Du kan iøvrigt også bruge <div>.
Nu er din tæller X-browser kompatibel fra NS4 og IE4 og op.
/mvh
</bole>
Avatar billede olebole Juniormester
21. juli 2001 - 18:54 #7
...hov to l\'er i \'taeller\' i linien, der definerer udskrivnings dokument-objektet i NS4:
    doc = document.layers.taeller.document;
Avatar billede warpgiga Nybegynder
25. juli 2001 - 02:36 #8
her er et alternativ, bemærk at den ikke benytter setTimeout, så den kan virke hård på cpu måleren, dog kan man sagtens indsætte et timeout omkring logiken i sleeps while loop...

js_timer.js


function jsTimer() {

/*
**  jsTimer v1.0 - Written by Fini A. Alring <alring@email.com> - (c) 2001
<!--
**
** Comment: A Timer object which can meassure elapsed time in millisecs (millisec-precision varies from implementation and platform).
**
** Methods:
**
**  jsTimer.elapsedTime; // return elapsed time since last timer reset, in millisecs.
** jsTimer.resetTimer; // resets the timer.
** jsTimer.startDateLocale; // resets the timer.
-->
*/

   
    this.elapsedTime = function() {
   
        return (new Date()) - this.startDate;
    }
   
    this.resetTimer = function() {
   
        this.startDate = new Date();
        this.startDateLocale = this.startDate.toLocaleString();
    }

    this.resetTimer(); // initiate the timer.

}




function sleep(milliSecs) {

    var sTimer = new jsTimer();

    while(sTimer.elapsedTime() < milliSecs) {
        continue;
    }
   
    return 0;

}

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