molily: getElementById() -> Objekt erforderlich...

Beitrag lesen

Hallo,

Ah, Verzeihung, kleines Missverständnis. Der erste Parameter von setTimeout wird nach Ablauf der Zeit tatsächlich im globalen Kontext mit eval() ausgeführt. Das ist bei einfachen Werten wie String und Number aber nicht schlimm, die bettet man einfach in den String ein. Da hier im Grunde nur Strings nötig sind, kann man diesen Weg gehen: window.setTimeout("f('" + objId + "', '" + objClr + "')", 1000); Der Code ist dann im globalen Scope lauffähig.
Wenn man mit anderen Objekten arbeitet, kann man auch so arbeiten:
window.setTimeout(f, 1000, objekt1, objekt2, ...);
Das gibt es seit JavaScript 1.2, aber MSIE 6 kann es leider immer noch nicht.
Angesichts dessen kann man zurecht darüber nachdenken, getElementById nicht immer wieder auszuführen, sondern die Referenzen in einer globalen Variable zu speichern. Wenn zudem eine globale Status-Variable ausreicht und alle Elemente synchron blinken, braucht man wie in deinem Beispiel freilich keine Parameter übergeben.

Mathias