Avatar billede virus Nybegynder
02. oktober 2004 - 14:26 Der er 4 kommentarer og
1 løsning

Synes der er problemer med setInterval

<script>
var getX = function(e) {
  if (e.x){return e.x;}
  if (e.pageX){return e.pageX;}
}
var getY = function(e){
  if (e.y) {return e.y;}
  if (e.pageY) {return e.pageY;}
}
function initMove(e){
  document.getElementById('lyr').style.top=getY(e)+'px';
  document.getElementById('lyr').style.left=getX(e)+'px';
}
function initClick(e){
  id = setInterval(""+ initMove(e) +"", 100);
}
</script>
<body>
<div style="padding:0px;width:10px;height:10px;background-color:#000000;position:absolute;" id="lyr" onclick="initClick(event)"></div>


Ind i en HTML fil med det og se efter :o)
Avatar billede ldanielsen Nybegynder
02. oktober 2004 - 14:34 #1
Jeg ved ikke helt hvad tanken er, men det første parameter i setInterval bliver tomt, idet function initMove ikke returnerer noget!
Avatar billede ldanielsen Nybegynder
02. oktober 2004 - 14:41 #2
<script>
var getX = function(e) {
  if (e.x){return e.x;}
  if (e.pageX){return e.pageX;}
}
var getY = function(e){
  if (e.y) {return e.y;}
  if (e.pageY) {return e.pageY;}
}
function initMove(x, y){
  document.getElementById('lyr').style.top=y + "px";
  document.getElementById('lyr').style.left=x + "px";
}
function initClick(e){
  intX = getX(e);
  intY = getY(e);
  id = setInterval("initMove(intX, intY)", 100);
}
</script>
<body>
<div style="padding:0px;width:10px;height:10px;background-color:#000000;position:absolute;" id="lyr" onclick="initClick(event)"></div>

Nu gør den faktisk noget 10 gange i sekundet, den placerer div'en det samme sted hver gang, ikke srlig imponerende ...

Den skulle vil enten bevæge sig eller følge musen, ikke?
Avatar billede roenving Novice
02. oktober 2004 - 14:43 #3
-- og et par grundlæggende fejl:

-- du kan ikke sætte dobbelte anførselstegn i javascript, så du må f.eks. "'" ...

-- og grunden til, at funktionen skal i en teksstreng er, at den først fortolkes, når intervallet er gået, hvorfor en medsendt parameter har mistet sin værdi eller er æøndret, og når det er en parameter i funktionen er den ovenikøbet lokal i funktionen, så den kan ikke bruges, når du når til inteval-udløbet !-)

Så du skal over i:

<script type="text/javascript">
var getX = function(e) {
  if (e.x){return e.x;}
  if (e.pageX){return e.pageX;}
}
var getY = function(e){
  if (e.y) {return e.y;}
  if (e.pageY) {return e.pageY;}
}
function initMove(y,x){
  document.getElementById('lyr').style.top=y+'px';
  document.getElementById('lyr').style.left=x+'px';
}
function initClick(e){
  id = setInterval("initMove("+getY(e)+","+getX(e)+"), 100);
}
</script>
<body>
<div style="padding:0px;width:10px;height:10px;background-color:#000000;position:absolute;" id="lyr" onclick="initClick(event)"></div>
Avatar billede roenving Novice
02. oktober 2004 - 14:45 #4
-- og en hensigtsmæssig måde vil nok også være at bruge setTimeout, da den jo så selvfølgelig ikke vil ændre sig, så det er ligegyldigt at gentage den ...

>>ldanielsen

-- hvordan når intX- og intY-værdierne ind i funktionen i setInterval ?-)
Avatar billede virus Nybegynder
08. juni 2005 - 07:01 #5
Hvis i vil have points lader jeg spørgsmålet være åbent 1 dag længere :o)
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