Avatar billede agurken Nybegynder
11. februar 2010 - 18:39 Der er 4 kommentarer og
1 løsning

Javascript "Vent"

Er det en mulighed for at "Vente" i en Javascript funktion?

Altså ligesom setTimeout(); men det skal man sige hvilken funktion, den skal fortsætte med bagefter. Det jeg søger er noget der kan stoppe en funktion i et stykke tid, og så køre videre med den efter.

Fx:

function Wait(){

document.getElementById("Text").innerHTML="Før vent";

// Her skal funktionen være, der fx venter i 1 sekund.

document.getElementById("Text").innerHTML="Efter vent";

}

Så at den skriver: Før vent. Og så 1 sekund senere ændre den til: Efter vent.
Avatar billede intenz Novice
11. februar 2010 - 20:14 #1
Du skal bruge en sleep funktion. Det er ikke en del af standard javascript, men der findes en del på nettet:
http://www.google.dk/#hl=da&source=hp&q=javascript+sleep&meta=&rlz=1R2GGLL_da&aq=f&oq=javascript+sleep&fp=8f579c65eeeb5235

Det er dog ikke noget jeg vil anbefale, at du bruger (med mindre du har en meget meget god grund til det). Med sådan en sleep funktion vil alt andet indhold fryse i browseren (anden javascript kode/events osv).

Du bør bruge setTimeout og så finde på et smart setup i dine funktioner så det ikke er et problem.

Et simpelt eksempel på det, ud fra din lille test, kunne være:

function Wait(act){
      if (act == 'sleep') {
        document.getElementById("Text").innerHTML="Før vent";
      } else {
        document.getElementById("Text").innerHTML="Efter vent";
      }
      var newAct = (act == 'sleep') ? 'wake' : 'sleep';
      setTimeout(function() { Wait(newAct) }, 1000);
  }
Avatar billede intenz Novice
11. februar 2010 - 20:33 #2
Ja, okay den ville så komme til at køre for evigt :P

Den bør være sådan her.

function Wait(act){
      if (act == 'sleep') {
        setTimeout(function() { Wait('wake') }, 1000);
        document.getElementById("Text").innerHTML="Før vent";
      } else {
        document.getElementById("Text").innerHTML="Efter vent";
      }
  }
Avatar billede agurken Nybegynder
11. februar 2010 - 20:33 #3
Hvordan laver du den der kode boks?
Avatar billede intenz Novice
11. februar 2010 - 20:34 #4
Du skal skrive:
(div)
...tekst
(/div)

Og så erstatte () med []
Avatar billede agurken Nybegynder
11. februar 2010 - 21:10 #5
Er det så noget ala det her:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script language="javascript" type="text/javascript">
function Wait(act){
      if (act == 'sleep') {
        setTimeout(function() { Wait('wake') }, 1000);
        document.getElementById("Text").innerHTML="Før vent";
      } else {
        document.getElementById("Text").innerHTML="Efter vent";
      }
  }
</script>
</head>

<body>
<span id="Text"></span><br />
<input type="button" value="Go!" onclick="Wait(sleep)" />
</body>
</html>
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