setInterval Problem bzw. clearInterval

Hi,

ich habe wieder ein problem mehr.

PHP:
stop();
ladeDasBild();
function doBild() {
	clearInterval(coundladeBild);
	trace("Bild laden");
}
function ladeDasBild() {
	var coundladeBild = setInterval(doBild, 1000);
}

Irgendwie haut er mir trotzdem immer wieder das BILD LADEN raus!

Wieso?

cu
 
Zuletzt bearbeitet:
Hi,

weil Du "coundladeBild" als lokale Variable der Funktion "ladeDasBild" definierst; in "doBild" ist sie dann nicht bekannt. Intervall-IDs sollten daher als Objektvariablen deklariert werden, die in allen Funktionen bekannt sind:
Code:
stop();

var coundladeBild = 0;

ladeDasBild();

function doBild() {
    clearInterval(coundladeBild);
    trace("Bild laden");
}
function ladeDasBild() {
   coundladeBild = setInterval(doBild, 1000);
}

Gruß
.
 
Hallo,

ich wieder ein problem mehr.
Das ist kein proper german!

Ich versteh nicht genau, was du meinst. Aber was ich seh, ist, dass du die ID für den Interval innerhalb einer Funktion mit var initiierst. Variablen, die innerhalb eines Funktions-Körpers mit var initiiert werden, werden nach dem Abarbeiten der Funktion verworfen. Wenn du var hingegen ausserhalb einer Funktion benutzt, kreierst du so eine bleibende Eigenschaft der Instanz, wo du var benutzt hast.

Ich würd dir mal empfehlen, mit einer bleibenden Variable als Intervall-Container zu arbeiten:

PHP:
var countLadeBild; //NICHT in der Funktion initiiert, darum bleibend

ladeDasBild();
function doBild() {
    clearInterval(this.countLadeBild);
    trace("Bild laden");
}
function ladeDasBild() {
    this.countLadeBild = setInterval(doBild, 1000);
}

gruss

EDIT: argh ;)
 
Wieso kollidiert das mit Deinem Setup? Zeig uns doch ein wenig mehr von Deinem Script, dann können wir Dir u.U. auch eine praktikable Lösung aufzeigen.

Es gibt m.E. wenig andere Methoden, als die ID Objektweit bekannt zu machen - wenn Du nicht mit dauerhafen Objektmembern arbeiten willst, könntest Du ein Hilfsobjekt erstellen, dass diese Id beinhaltet und das Objekt an die per setInterval aufgerufene Methode übergeben:
Code:
function foo(obj) {
    clearInterval(obj.id);
    machwas();
}

function bar() {
    var tempobj = new Object();
    tempobj.id = setInterval(foo, 1000, tempobj);
}

Gruß
.
 
Zurück