Bernhard Peissl: Objekte und Events

Beitrag lesen

Hallo Michael

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
      }

Ich bin kein Profi, und ich weiss auch nicht, obs was bringt, aber du hast die Funktion feld_mm() im Konstruktor nicht als Methode des Objekts definiert. Du definierst da nur, dass das Objakt die Variablen feld_div und feld_mm besitzt, aber nicht, dass du mit der Methode feld_mm() auf feld_div zugreifen kannst.

Meiner Meinung nach sollte der Konstruktor irgendwie so aussehen:

// function feld(feld_div, feld_mm){
//   this.feld_div = feld_div;
//   this.feld_mm  = feld_mm;
//   this.feld_mm() = feld_mm();  // !!!
//   this.feld_div.document.onmousedown = this.feld_mm;
//   this.feld_div.document.captureEvents(Event.MOUSEDOWN);
// }

Abgesehen davon, was ist "mm" überhaupt ??

Ich weiss nicht, obs stimmt, oder ob ich nur Blödsinn labere, aber ich würd es sowieso anders probieren. Ich weiss nicht wie es anders geht, aber das was du mir hier vorgelegt hast, wäre mir eindeutig zu kompliziert ;-)

Grüsse
Bernhard