Robert Bamler: übergabe von variablen an mit settimeout ausgeführte funktion

Beitrag lesen

Hallo Marc,

Wenn der layer bei mir die koordinaten left: 0 top:16 hat und ich lasse ihn zu 200,200 scrollen geht der layer zur absoluten position (grob geschätzt -vierfache auflösung oder so) 5120,4048.

Welchen Browser verwendest du denn? Ich hab' das unter IE 6 und NC 7 getestet, da gings. Ich habe auf einem Screenshot nachgemessen, der "Ankunftsort" könnte ungefähr 200,200 sein. Nur Opera 7 beta 2 macht komischerweise gar nichts - weiß jemand warum?

Ich schick dir mal den Quellcode, mit dem ich getestet habe. Es ist noch die gleiche Funktion, nur die Schrittzahl wird jetzt anders ermittelt, weil ich das so irgendwie doch sinnvoller finde. Es funktioniert bei mir aber auch mit der bisherigen Schrittzahlermittelung.

Der Code:

<html>
<head>
<script language="JavaScript" type="text/javascript">
<!--
function accessStyle(objectID)
{
  if (document.getElementById) {
    return document.getElementById(objectID).style;
  } else {
    alert("browser momentan nicht unterstuetzt.\nExiting.");
    return 0;
  }
}

function bewegen2(objectID,xZiel,yZiel,zeit)
{
  objektStyle = accessStyle(objectID);
  xPos = parseInt(objektStyle.left);
  yPos = parseInt(objektStyle.top);

schrittzahl = Math.round(Math.sqrt((xZiel-xPos)*(xZiel-xPos) + (yZiel-yPos)*(yZiel-yPos)));
  if (schrittzahl == 0)  schrittzahl = 1;
 
  xSpeed = (xZiel - xPos) / schrittzahl;
  ySpeed = (yZiel - yPos) / schrittzahl;
  intervall = setInterval("schrittzahl--; xPos += xSpeed; yPos += ySpeed; objektStyle.left = Math.round(xPos) + 'px'; objektStyle.top = Math.round(yPos) + 'px'; if (schrittzahl == 0) clearInterval(intervall);",zeit);
}
//-->
</script>
</head>
<body>

<div id="testlayer" style="position: absolute; top: 16px; left: 0px;"><a href="javascript:bewegen2('testlayer',200,200,100)">blabla</a></div>

</body>
</html>

Würde mich wundern, wenn das bei dir nicht funktioniert, denn bei mir läuft's und ich sehe auch keine Fehler.

Viel Erfolg und noch frohe Weihnachten,
Robert