Marek: Objekt soll Maus folgen (in IE, NN7, Opera 7)

Hallo!
Ich habe wie immer ein Problem. Folgendes: Ich möchte dass einfach dein div Layer genau der Maus nachfährt, bzw. genauer gesagt genau unter der Maus liegt. Habe nun einen kleinen Quelltext der nicht funktioniert. Vielleicht weiß jemand von euch das Problem.

Zusatz: Es geht im IE, aber nicht in Opera und Mozilla (sprich NN7). Mozilla gibt mir übrigens als Fehlermeldung aus: Movey is not defined.

MFG Marek

<html>
<head>

<style type="text/css">
#Movey {position:absolute; background-color:#000000; width:80px; height:80px}
</style>

<script language="JavaScript" type="text/javascript">
var LayerX, LayerY, MausX, MausY, Movelayer;

function init (element,e)
         {
         Movelayer = element;
         if (document.layers)
            {
            LayerX = e.pageX - 40;
            MausX = e.pageX;
            LayerY = e.pageY - 40;
            MausY = e.pageY;
            document.captureEvents(Event.MOUSEMOVE)
            }
         else if (document.all || document.getElementById)
            {
            LayerX = e.clientX - 40;
            MausX = e.clientX;
            LayerY = e.clientY - 40;
            MausY = e.clientY;
            }
         document.onmousemove = Move;
         }

function Move(e)
         {
         if (document.layers)
            {
            Movelayer.left = LayerX + e.pageX - MausX;
            Movelayer.top = LayerY + e.pageY - MausY;
            }
         else if(document.all)
            {
            Movelayer.style.posLeft = LayerX + event.clientX - MausX;
            Movelayer.style.posTop = LayerY + event.clientY - MausY;
            }
         else if (document.getElementById)
            {
            Movelayer.style.left = (LayerX + e.clientX - MausX) + "px";
            Movelayer.style.top = (LayerY + e.clientY - MausY) + "px";
            }
         }

function Stopp()
         {
         document.onmousemove = null;
         Movelayer = null;
         if (document.layers)
            {
            document.releaseEvents(Event.MOUSEMOVE);
            }
         }

if (document.layers)
   {
   document.Movey.clip.width = 60;
   document.Movey.clip.height= 60;
   document.Movey.captureEvents(Event.MOUSEUP | Event.MOUSEDOWN);
   document.Movey.onmousedown = function(e)
                                   {
                                   init(this,e);
                                   };
   document.Movey.onmouseup = function(e)
                                 {
                                 Stopp();
                                 };
   }
</script>

<title>Dynamisches HTML</title>
<meta name="author" content="tm021059">
</head>

<body onload="init(Movey,event)">
<div id="Movey"> </div>
</body>
</html>

  1. hi,

    Mozilla gibt mir übrigens als Fehlermeldung aus: Movey is not defined.

    ist es ja auch nicht.

    oder wo hast du die javascript-variable Movey definiert, die du hier

    <body onload="init(Movey,event)">

    beim aufruf der funktion verwendest?

    gruss,
    wahsaga

    1. Ja wo und wie soll ichs denn definieren. Ich hab ehrlich gesagt keine Ahnung, deswegen frage ich ja hier, vielleicht hat hier jemand eine Ahnung.

      1. hi,

        Ja wo und wie soll ichs denn definieren.

        meiner meinung nach solltest du es gar nicht als javascript-variable definieren, sondern erstmal die denkweise der realität anpassen.

        du hast ein div mit der ID "Movey".
        beim aufruf deiner funktion übergibst du jetzt einfach Movey als wert für den parameter element, und willst es dann mit
        Movelayer = element;
        weiter benutzen, offenbar als objekt, welches auf deinen div zeigt.

        ja holla, mal langsam! so einfach geht das doch nicht!
        nur dadurch, dass du im html-code eine ID vergibst, hast du doch noch lange nicht in javascript ein objekt gleichen namens zur verfügung, welches du dann als referenz auf dieses html-element benutzen kannst - da muss erst mal ein vernünftiger zugriff nach dem DOM erfolgen.

        dieser könnte z.b. so aussehen, dass du die funktion mit "Movey" als erstem parameter aufrufst (beachte den unterschied - ich benutze jetzt einen _string_ mit dem inhalt "Movey"), und dir dann erst mal eine referenz auf deinen div besorgst, z.b. mit

        Movelayer = document.getElementById(element);

        Ich hab ehrlich gesagt keine Ahnung, deswegen frage ich ja hier, vielleicht hat hier jemand eine Ahnung.

        dann solltest du dir aber erst mal ein bisschen mehr ahnung "besorgen", das gilt nämlich hier im forum als vorrausetzung.

        eine gute erste anlaufstelle dafür ist - natürlich - http://selfhtml.teamone.de/javascript/

        gruss,
        wahsaga