Joachim: geeignete Schleife zum layer verschieben (bitte lesen)

Beitrag lesen

hi,

bitte poste nur den relevanten Code.
Hier mal ein Testscript, so klappt es. Beachte, das Du im NC6 und IE die Div-Layerposition mit obj.left/top nur herausfindest, wenn Du sie zuvor mit JS zugewiesen hattest - passiert hier in "initMove()"

Gruss  Joachim

<html>
<head>

<style type="text/css">

#ebene0 {position:absolute; top:100px; left:50px; width:50px; height:100px; visibility:visible;}

</style>

<script language="javascript1.2">

// some known objects
var nc  = !!(document.captureEvents && !document.getElementById);
var ie4 = !!(document.all           && !document.documentElement);

// einfache div-layer referenzieren
function dRefS(num) {return (nc? document.layers[num] : (ie4? document.all[num].style : document.getElementById(num).style))}

// id, zielposition x und y, Geschwindigkeit
function move(id,x,y,speed)
{
 aktX  =  parseInt(dRefS(id).left);
 aktY  =  parseInt(dRefS(id).top);
 distX =  x - aktX;
 distY =  y - aktY;

dist  =  Math.sqrt(distX*distX + distY*distY);

if(Math.abs(dist) < speed)
 {
  dRefS(id).left =  x;
  dRefS(id).top  =  y;
  return;
 }
 dRefS(id).left =  aktX + distX / dist * speed;
 dRefS(id).top  =  aktY + distY / dist * speed;
 run =  setTimeout("move('" + id + "'," + x + "," + y + "," + speed + ")", 50);
}

// id, startposition x und y, zielposition x und y, Geschwindigkeit
function initMove(id, startX, startY, x, y, speed)
{
 dRefS(id).left =  startX;
 dRefS(id).top  =  startY;
 move(id,x,y,speed);
}

</script>

</head>

<body>
<a href="#" onclick="initMove('ebene0',50,50,500,600,10); return false;">bewegen</a>

<div id="ebene0">xxx</div>

</body>
</html>