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