Felix: setTimeout mit Objekt

Hallo,

ich möchte gerne eine onMouseOver-Grafik erst nach x millis, nachdem das onMouseOut-Event eintrat wechseln lassen. Ich habe dafür die eventHandler der Grafiken "überschrieben". Leider findet er mein Objekt nichtmehr, nachdem der Timer abgelaufen ist.

Insgesamt soll eine zweite Grafik gewechselt werden (id="imgFrame").

executeFrameOut ist eine Methode der Grafikobjekte (img.executeFrameOut = executeFrameOut;)

Codeauszug:

...
function executeFrameOut()
{
 document.images['imgFrame'].src = folderFrame + "frame0" + ext;
}//executeFrameOut

function onGraphicOut()
{
 this.src = this.out;
 frameTimer = setTimeout("this.executeFrameOut()", 500);

}//onGraphicOut
...

Kann mir jemand helfen?

  1. Moin,

    frameTimer = setTimeout("this.executeFrameOut()", 500);

    Der Code wird erst nach der angegebenen Zeit aufgerufen und vorher ist das für JavaScript einfach nur ein String. Du kannst darin keine Objekte ablegen.

    Als Idee: Als ich das letzte mal auf dieses Problem gestoßen bin, habe ich einfach alle meine Objekte in einem globalen Array abgelegt und dem setTimeout den Array-Index mitgegeben.

    --
    Henryk Plötz
    Grüße aus Berlin
    1. Der Code wird erst nach der angegebenen Zeit aufgerufen und vorher ist das für JavaScript einfach nur ein String.

      Ahh, danke für die Erklärung.

      Als Idee: Als ich das letzte mal auf dieses Problem gestoßen bin, habe ich einfach alle meine Objekte in einem globalen Array abgelegt und dem setTimeout den Array-Index mitgegeben.

      Klingt ganz gut mit dem Array, allerdings denke ich, dass mir eine einfache globale Variable reicht, oder?

      Und noch eine Frage, die mir da einfällt:
      Es ist immer die gleiche Grafik, die zurückspringt. Wenn ich aber über einen Button fahre, soll der Timer gecancled werden. geht das? Mit einem globalen Timer, welcher dann über clearTimeout gelöscht wird?

      1. Moin,

        Klingt ganz gut mit dem Array, allerdings denke ich, dass mir eine einfache globale Variable reicht, oder?

        Kann sein, hatte ich so nicht gesehen. (Ich hatte damals mehrere Objekte die zu bearbeiten waren.)

        Es ist immer die gleiche Grafik, die zurückspringt. Wenn ich aber über einen Button fahre, soll der Timer gecancled werden. geht das? Mit einem globalen Timer, welcher dann über clearTimeout gelöscht wird?

        Jo, einfach den Rückgabewert von setTimeout() global merken und gegebenenfalls an clearTimeout() verfüttern.

        --
        Henryk Plötz
        Grüße aus Berlin