Felix Riesterer: caught exception: out of memory

Beitrag lesen

Lieber mb,

das Schlüsselwort "this" hat je nach Kontext ganz andere Bedeutungen. Es bezieht sich innerhalb der Funktion, die Du dem setTimeout als ersten Parameter übermittelst, auf das window-Objekt. Die Variable "this" ist daher dort eine völlig andere, als noch zuvor im Scope der fading-Methode.

Hier ist eine übliche Lösung:

Function Fade (elem, array, ms) {
    // Variable
    this.elem  = elem;    // Bild
    this.array = array;   // URLs
    this.ms    = ms;      // Milisekunden

    // Methods
    this.fading = function () {
        var count = 0;
        var that = this; // für den setTimeout-Kontext später

        var stepping = window.setTimeout(function () {
            // that != this!
            that.elem.style.backgroundImage = that.array[count];
            // [...]
        }, this.ms);
    };
}

Warum willst Du den Rückgabewert von setTimeout speichern? Die übermittelte Funktion wird eh nur einmal ausgeführt! Da lohnt es sich ja kaum, den timeout wieder zu löschen! Dazu verwendest Du clearTimeout() ohne irgendeine Angabe (das müsste clearTimeout(stepping) heißen!), was mich zu der Frage bringt, was Du da eigentlich tust.

Liebe Grüße,

Felix Riesterer.