Eventhandling in Klassen
DerToM
- javascript
0 Struppi
Guten Morgen,
ich bastele gerade an einem Drag'n'Drop-System mit Javascript und würde das ganze gerne in einer klasse verpacken. dummer weise funktioniert das eventhandling nicht, wenn ich alle funktionen in der klasse zusammen fasse:
function DragSystem()
{
document.onmousedown = this.dragStart;
}
DragSystem.prototype.dragStart = function(ereignis)
{
alert('test');
}
auch der versuch, die methode zum eventhandling außerhalb der klasse zu übergeben funktioniert nicht.
var drag = new DragSystem();
document.onmousedown = drag.startDrag;
bevor ich die funktionen als klasse gruppiert hatte, gings wunderbar. ist das so nicht machbar oder habe ich etwas übersehen?
mfg
DerToM
ich bastele gerade an einem Drag'n'Drop-System mit Javascript und würde das ganze gerne in einer klasse verpacken. dummer weise funktioniert das eventhandling nicht, wenn ich alle funktionen in der klasse zusammen fasse:
function DragSystem()
{
document.onmousedown = this.dragStart;
}DragSystem.prototype.dragStart = function(ereignis)
{
alert('test');
}
Das geht so nicht.
document.onmousedown = this.dragStart;
Das heißt, in der Funktion this.dragStart bezieht sich this auf document, nicht auf das DragSystem Objekt, wie du vermutest.
Um die Funktion die du möchtest aufzurufen, musst du mit einer anonymen Funktion und einer lokalen Kopie von this arbeiten.
var self = this;
document.onmousedown = function(e) { self.dragStart(e);};
Struppi.