Avatar billede flushout Nybegynder
14. oktober 2004 - 12:23 Der er 7 kommentarer og
1 løsning

div skal komme ind på skærmen fra venstre, problem med setTimeout

Hejsa,

Jeg har lavet denne lile funktion. Den burde flytte div'et 'thadiv' langsomt ind på skærmen fra venstre mod højre.

Istedet for at gøre det så fryser browseren. Jeg mistænker setTimeout for at skabe problemet, er der nogen der kan fortælle mig hvor fejlen er?

----

function moveDiv(){
    var x = -200;
    while (x < 205){
        document.getElementById('thadiv').style.left=x;
        setTimeout('x = x+10;',20);
    }
}

----

På forhånd tak =]
Avatar billede roenving Novice
14. oktober 2004 - 12:49 #1
Tjah, du forsøger i hvert fald på noget, man ikke kan ...

Jeg tænkte på at dissekere din kode, men der er så mange fejl o.l. at det er langt nemmere at give en rettet version:

var x = -210;
function moveDiv(){
  x += 10;
  while (x < 205){
    document.getElementById('thadiv').style.left = x + 'px';
    setTimeout('moveDiv()',20);
  }
}
Avatar billede flushout Nybegynder
14. oktober 2004 - 12:50 #2
ok, jeg har nu prøvet at løse problemet.. nu hænger den ikke browseren længere, den giver til gengæld en fejlmeddelelse..

---

function moveDiv(){
    var x = -200;
    while (x < 205){
        document.getElementById('thadiv').style.left=x;
linie 10 ->    window.setTimeout(addX(x),20);
    }
    clearTimeout();
}
function addX(x){
    x = x+10;
    return x;   
}

---

Linie: 10
Tegn: 3
Fejl: Argumentet er ugyldigt

---

Jeg kan kun sige ... hmm ... ?
Avatar billede flushout Nybegynder
14. oktober 2004 - 12:54 #3
ok.. jeg prøvede at sætte din kode ind roenving.. nu crasher browseren igen =/..

Her er hele koden:

<html>
<head>
<title>Topdanmark</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
var x = -210;
function moveDiv(){
  x += 10;
  while (x < 205){
    document.getElementById('thadiv').style.left = x + 'px';
    setTimeout('moveDiv()',20);
  }
}
</script>
</head>
<body style="background:#FFFFFF url(takkesite.jpg) top left" onload="setTimeout('moveDiv()',20);">
<font face="Verdana">
    bla bla bla
</font>
<div name="thadiv" id="thadiv" style="position:absolute; left:-200px; top:300px; width:200px; height:350px;">
    HEJSA bummelum, nu skal jeg flyve
</div>
</body>
</html>
Avatar billede flushout Nybegynder
14. oktober 2004 - 12:55 #4
hovsa... kaldet i <body> skal være med en timeout på 3000, ikke 20. det er en skrivefejl.. ikke at det gør nogen forskel :P
Avatar billede roenving Novice
14. oktober 2004 - 13:02 #5
Hov, jeg havde glemt at udskifte din while med en if:

  if (x < 205){
Avatar billede flushout Nybegynder
14. oktober 2004 - 13:04 #6
hehe.. du løser som sædvanlig problemerne =)

Mange tak for hjælpen!!

Smid et svar :)
Avatar billede roenving Novice
14. oktober 2004 - 13:07 #7
Velbekomme '-)
Avatar billede roenving Novice
14. oktober 2004 - 13:16 #8
-- og 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