Michael Kaufmann: Objekte und Events

Beitrag lesen

Hallo,

ich habe ein Problem mit dem Aufrufen von Objektmethoden über einen Eventhandler. Hier der vereinfachte Code:

<html>
    <head><title>Test</title></head>
    <script language="JavaScript">
    function feld_mm()
      {
      alert(this.feld_div);
      }

function feld(feld_div)
      {
      this.feld_div             = feld_div;
      this.feld_mm              = feld_mm;

this.feld_div.document.onmousedown = this.feld_mm; // hier kommt undefined als Ausgabe ! Warum ?
      this.feld_div.document.captureEvents(Event.MOUSEDOWN);
      }
    function init()
      {

feld1=new feld(window.document.elm1);
      feld2=new feld(window.document.elm2);

feld2.feld_mm();  // Hier kommt als Ausgabe ObjectLayer, also das richtige
      }

</script>
    <body onload="init()" bgcolor="#ffffff">
    <div id="elm1" style="position:absolute; top:10px; left:50px;"><img src="images/feld1.gif" border=0"></div>
    <div id="elm2" style="position:absolute; top:40px; left:50px;"><img src="images/feld2.gif" border=0"></div>
    </body>
</html>

Eigentlich sollte, wenn an auf das Feld klickt ein Fensterchen aufpopen, in dem steht: [ObjectLayer].
Anstatt dessen steht dort aber undefined. Es sieht so aus, als würde nicht die Methode feld1.feld_mm() aufgerufen werden, sondern die Funktion feld_mm().
Das Problem liegt wohl an der Zeile:

this.feld_div.document.onmousedown = this.feld_mm;

im Konstruktor des Objekts (function feld();)
Dummerweise habe ich keine Ahnung warum! Geht das vielleicht gar nicht ?
Ich benutze NN4.73 für Linux (dummerweise gibt es gerade bei den Events unterschiede zwischen den Linux und Windows Versionen)

danke und tschüss Michael