Also ich hatte mich mal an die Erstellung von Objekten mittels Javascript gemacht und komischerweise bin ich nun schon gescheitert, obwohl es noch ziemlich "leicht" zu verstehen sein sollte.
Ich hab hier ein Objekt "jw2DragBox" erstellt (zumindest versucht), welches später dazu dienen soll, bestimmte Layer verschiebar zu machen.
Bis dahin bin ich gekommen und dachte mir, dass ich es mal ausprobieren sollte, wie das Ergebnis bis dahin aussieht:
Da kam aber nun der Fehler. Also initialisiert scheint es ja zu sein, weil am Anfang keine Fehlermeldungen ausgegeben werden. Wenn ich dann aber in den Titel der Box klicke, dann kommt ein Javascriptfehler in meinem FF:
Error: this._listeners has no properties
Line: 39
Diese Zeile hab ich mal oben im Quelltext markiert. Nun meine Frage: Wie kann es sein, dass die Funktion "_handlePress" nicht auf die Objekteigenschaften zugreifen kann, die im Konstruktor erstellt worden sind? Oder hab ich da eine völlig falsche Strategie an dieses Problem heran zu gehen?
Wäre schön, wenn mir jemand helfen könnte, da ich nach 2h des Probierens und des Nachforschens keine Lust mehr habe
Edit: Kann es sein, dass durch dieses Eventhandler was durcheinander kommt? Ich hab das Gefühl, dass er die Funktion zwar noch aufruft, aber diese ihre Zugehörigkeit nicht mehr im Objekt selber sieht. Oder täusche ich mich nun?
Ich hab hier ein Objekt "jw2DragBox" erstellt (zumindest versucht), welches später dazu dienen soll, bestimmte Layer verschiebar zu machen.
Code:
function jw2DragBox(container, handle, target) {
handle = handle ? handle : container;
this.container = document.getElementById(container);
this.handle = document.getElementById(handle);
if(target) {
this.target = document.getElementById(target);
}
this._listeners = new Array();
this._listeners['draginit'] = new Array();
this._listeners['dragstart'] = new Array();
this._listeners['dragmove'] = new Array();
this._listeners['dragend'] = new Array();
this._handlePress = function(event) {
var funcs = this._listeners['dragstart']; //Zeile 39
for(i in funcs) {
funcs[i](event);
}
}
this.start = function() {
this.handle.addEventListener('mousedown', this._handlePress, false);
}
this.register = function(type, func) {
this._listeners[type].push(func);
}
}
Code:
<body>
<div id="box" style="position: absolute; left: 200px; top: 200px; opacity: 1;">
<p id="title">Titelleiste</p>
irgendein text
</div>
<div style="position:absolute; top:200px; left:200px;">
<input type="text" id="target" value="Schreib doch mal ein scheiss text hin" style="position:relative; left:100px; top:0px;" />
</div>
<script type="text/javascript">
function testpage() {
alert("testseite");
}
var neueBox = new jw2DragBox('box', 'title', 'target');
neueBox.register('dragstart', testpage);
neueBox.start();
</script>
</body>
Da kam aber nun der Fehler. Also initialisiert scheint es ja zu sein, weil am Anfang keine Fehlermeldungen ausgegeben werden. Wenn ich dann aber in den Titel der Box klicke, dann kommt ein Javascriptfehler in meinem FF:
Error: this._listeners has no properties
Line: 39
Diese Zeile hab ich mal oben im Quelltext markiert. Nun meine Frage: Wie kann es sein, dass die Funktion "_handlePress" nicht auf die Objekteigenschaften zugreifen kann, die im Konstruktor erstellt worden sind? Oder hab ich da eine völlig falsche Strategie an dieses Problem heran zu gehen?
Wäre schön, wenn mir jemand helfen könnte, da ich nach 2h des Probierens und des Nachforschens keine Lust mehr habe
Edit: Kann es sein, dass durch dieses Eventhandler was durcheinander kommt? Ich hab das Gefühl, dass er die Funktion zwar noch aufruft, aber diese ihre Zugehörigkeit nicht mehr im Objekt selber sieht. Oder täusche ich mich nun?
Zuletzt bearbeitet: