onMouseOver überwachen oder bessere Lösung?

Moin Leute!

Ist es möglich in einer JavaScript-Funktion das onMouseOver-Event zu überwachen?

Zur Erklärung:

Ich habe ein Script geschrieben, dass per onMouseOver eine Liste mit Links anzeigt.
Damit die Liste auch wieder verschwindet, habe ich eine onMouseOut-Funktion definiert, die die Liste wieder verschwinden lässt.

Damit man überhaupt Zeit hat mit dem Mauszeiger in die Liste zu kommen um dort einen Link anzuklicken, habe ich in der onMouseOut-Funktion eine einfache for-Schleife integriert, die die Liste noch etwa 5 sec. sichtbar lässt.

Während die Schleife läuft ist jetzt aber keiner der Links anklickbar und dann verschwindet die Liste.

Ich habe versucht jeden Link in der Liste ebenfalls mit dem gleichen onMouseOver-Event zu versehen, das ja dann die Liste sichtbar lassen würde.

Aber darauf kommt keine Reaktion, weil die Links wie gesagt nicht klickbar sind und das Event daher eben auch nicht funktioniert.

Ich bräuchte jetzt also einen Zusatz, der dafür sorgt, dass die for-Schleife beendet wird, sobald ein neuer onMouseOver aktiv wird.
Geht sowas?

Oder gibt es eine bessere Lösung als diese Schleife, um das Problem zu lösen?

setTimeout und setInterval funktionieren nur beim ersten Aufruf des Effekts, danach erfolgt sofort der onMouseOut. Bringt also auch nichts.

Gruss
Lanzelot

nr verzoegerung ist immer mit setTimeout zu loesen, einen wait od. sleep gibt es in js nicht.

das mit ner for-schleife zu loesen taugt nciht. damit zwingst du nur den interpreter in die knie, und es koennen die dollsten effekte auftreten…

link.onmouseover = liste.show
link.onmouseout = setTimeoutFunc

liste.onmouseover = clearTimeoutFunc
liste.onmouseover = setTimeoutFunc

denke daran, dass timeouts immer in einer globalen variable gespeichert und auf alle faelle geloescht werden muessen…

globale Variable
Moin dog.je!

damit zwingst
du nur den interpreter in die knie, und es koennen die
dollsten effekte auftreten…

Klingt logisch.
Ein „doller Effekt“ ist dann wohl, dass die Links nicht anklickbar sind.

link.onmouseover = liste.show
link.onmouseout = setTimeoutFunc

liste.onmouseover = clearTimeoutFunc
liste.onmouseover = setTimeoutFunc

Hmm, das hab ich jetzt nicht ganz verstanden.
Das ist doch nicht der direkte Code, oder?

Bin noch nicht ganz so bewandert in JavaScript.

denke daran, dass timeouts immer in einer globalen variable
gespeichert und auf alle faelle geloescht werden muessen…

Globale Variable - das könnte die Lösung sein!

Die Löschung war zwar vorhanden, aber ich hatte den TimeOut in eine Funktion verpackt.

Es wäre nett, wenn Du mir das Code-Fragment noch weiter erklären könntest.

Auf jeden Fall schon mal vielen Dank!
Ich werde mal schauen ob sich das Problem mit der globalen Variable schon lösen lässt.

Gruss
Lanzelot

naja, pseudecode halt, der den ansatz verdeutlichen sollte.

ok, also hier noch mal ein bissel ausfuehrlicher, aber nciht ausprogrammiert:

var tmr;
// zeigt onmouseover die liste an, und loescht den timeout
function showList()
 {
 clearTimeout(tmr);
 liste.show();
 }
//startet die verzoegrung fuer das ausblenden und blendet danach die liste aus
funciton hideList(arg1)
 {
 clearTimeout(tmr);
 if (arg1==1) { liste.hide(); }
 else { tmr = setTimeout('hidelist(2)',1000); )
 }
foo

 bar
baz 

Moin dog.je!

ok, also hier noch mal ein bissel ausfuehrlicher

Super, danke!

Damit kann ich was anfangen.
Ich glaube jetzt habe ich auch kapiert warum das bei nicht klappte.

Gruss
Lanzelot