This und typeof

Moin ,

Ich muss blind sein , aber bei diesem script wollen die einfachsten sachen nicht klappen …

bei typeof gibts error

Fehler: this.ShowPos is undefined
Zeile: 18

und wie man sieht this.status

bleibt immer false , obwohl doch myZoom.anaus(); das eigentlich zu true ändern sollte.

Ich seh es nicht … was kalppt da nicht mit dem this

function Zoom() {
this.status = false;
/* top und left des objektes */
this.FindPos = function (obj) {
var curtop = 0;
var curleft = 0;
return {top:curtop, left:curleft};
} // end of findPos()
/* pos anzeigen */
this.ShowPos = function (ereignis) {
if (!ereignis) ereignis = window.event;
if (ereignis) {
if (document.getElementById) {
if ( this.status ) {
/* status wird nie true , warum */
var hitleft = ereignis.clientX;
var hittop = ereignis.clientY;
if (typeof(this.ShowPos.posmini) === ‚undefined‘) {
/* error by typeof , this.ShowPos.posmini is not defined */
this.ShowPos.posmini = „defined“;
}
} else {alert(„false status“); /* this.anaus hat die variable nicht verändert */ }
}
}
}
this.anaus = function() {
if (this.status) {this.status = false;} else {this.status = true;}
/* this.status bleibt immer false :frowning: */
}
}
myZoom = new Zoom();
myZoom.anaus();
document.onmousemove = myZoom.ShowPos;

Danke fürgs gugen , vielleicht fällt dir ja was dazu ein.

Iacta alea est - „Der Würfel ist geworfen“

Guten Tag,

in der letzten zeile:
document.onmousemove = myZoom.ShowPos;

verlierst du die bindung von ShowPos an myZoom. Wenn ShowPos durch das mousemove-event aufgerufen wird, ist es an document gebunden. d.h. this ist document.

in einigen modernen Browsern gibt es die Moeglichkeit eine function explizit an ein object zu binden:

document.onmousemove = myZoom.ShowPos.bind(myZoom);

So wird bind mit myZoom als this aufgerufen.

Fuer Browser die das nicht unterstuetzen gibt es einen polyfill, guckst du hier unter ‚Compatibility‘:

https://developer.mozilla.org/en/JavaScript/Referenc…

gruss

Danke für die Erläuterung .

Ich ahb es dann gleich ganz anders gelösst und es parametisiert (klinkt komisch lol) funktioniert aber.

Dennoch werd ich einfach mal eine version machen wie du es vorschlägst (obwohl ich nicht so sehr auf crossbrowser codes stehe).