Reinhard: caught exception: out of memory

Beitrag lesen

Guten Abend,


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;
    alert(this.elem + "\n" + this.array + "\n" + this.ms);
    var stepping = window.setTimeout(function() {
      alert(this.elem + "\n" + this.array + "\n" + this.ms);
      this.elem.style.backgroundImage = this.array[count];
      if (count > array.length) window.clearTimeout();
      count++;
    }, this.ms);
  }
}

beim ersten alert gibt er noch definierte werte an. erst beim zweiter alert gibt der 3 mal undfined aus. Ich hab n konstruktor gebaut mit Bildwechsel. den halben Tag hab ich gegoogel, bis ich herausgefunden hab, das sich die Werte verändern :/ und ich weis nicht wieso.

Bei deinem ersten Alert befindest du dich mit dem Scope bei deinem Fade Object, welches die Eigenschaften elem, array und ms besitzt.
Bei deinem zweiten Alert befindest du dich allerdings mit dem Scope beim window (setTimeout). window besitzt keine der Eigenschaften elem, array oder ms; somit bekommst du undefined zurück.

Du kannst setTimeout Parameter mitgeben: setTimeout(fn(elem, array){}, this.ms, this.elem, this.array);

Der erste Parameter ist für die Funktion, der Zweite gibt die Millisekunden an. Alle weiteren sind optional; falls anwesend werden sie der angegebenen Funktion übergeben.

Vielleicht schaffe ich es später dir noch ein wenig Lektüre dazu mit auf den Weg zu geben. (Vielleicht könnte sich auf jemand anderes darum kümmern - ich bin morgen erst spät wieder da)

Reinhard