molily: SetTimeout Problem

Beitrag lesen

Hallo,

setTimeout("tuwas(" + obj + ", " + value + ")", 1000);

Wenn sich tuwas aber mit setTimeout() selbst aufruft, wird die Variable obj, die das Bild präsentiert, nicht als Objekt übergeben, sondern als ein String mit dem Inhalt "[object HTMLImageElement]". Warum wird diesmal so ein String übergeben

Der Operator »+« verkettet Strings, wenn ein Operand ein String ist.
Der andere Operand wird dann auch in einen String umgewandelt.
Das heißt, wenn du »"String " + Objekt« notierst, dann wird das Objekt in einen String umgewandelt. Bei Elementobjekten kommt dann das genannte heraus. Damit lässt sich offensichtlich nichts anfangen, also kannst du diese Methode vergessen.

Und was muss ich tun, damit ich in der Fuktion bei den weiteren Aufrufen auf obj wieder als Objekt zugreifen kann?

Die Objekte nicht in Strings umwandeln.
setTimeout kann auch eine Funktion als ersten Parameter annehmen. Das geht dann etwa so:

window.setTimeout( function () { tuwas(obj, value); }, 1000);

Diese anonyme, verschachtelte Funktion hat Zugriff auf die lokalen Variablen obj und value der tuwas-Funktion, in der sie notiert ist, auch wenn diese längst nicht mehr läuft. Das nennt sich Closure.

Mathias