David: onmouseout-fehler?

Hallo nochmal,

hier ein Stück Quelltext:

<div id="m1.sub" class="menuPopup" onMouseOut="javascript:menuHidePopupAll();" style="position:absolute; left:25; width:150; display:none">
<div><a style="width:100%; font-size:10pt" href="about:blank">Punkt 1</a></div>
<div><a style="width:100%; font-size:10pt" href="about:blank">Punkt 2</a></div>
<hr>
<div><a style="width:100%; font-size:10pt" href="about:blank">Punkt 3</a></div>
</div>

Das Problem, daß ich damit habe ist, daß der onMouseOut-Befehl aufgerufen wird, sobald ich einen der Punkte mit der Maus 'berühre'. Eigentlich müsste onMouseOut doch nur aktiv werden, wenn ich das äußere DIV-Tag komplett verlasse?!

Bitte um baldige Antwort (gleich ist Feieramnd :).

Bye, David

  1. Das Problem, daß ich damit habe ist, daß der onMouseOut-Befehl aufgerufen wird, sobald ich einen der Punkte mit der Maus 'berühre'. Eigentlich müsste onMouseOut doch nur aktiv werden, wenn ich das äußere DIV-Tag komplett verlasse?!

    Hallo David,

    In Javascript läuft alles über Objekte. D.h. wenn du auf einen "Punkt" gehst verlässt du das <div>-m1.sub und gehst in das <div> welches den einen "Punkt" einschließt. Dadurch wird in document.all.my.sub der event onmouseout ausgelöst und in document.all(x) (welches das eine <div> darstellen soll) der event onmouseover.
    Die Lösung liegt darin, dass du um das my.sub <div> ein objekt legen mußt (ein großeres unsichtbares <div>) und ein onmouseover dessen zum schließen deines menüs nehmen mußt. Desweiteren mußt du noch window.event.cancelBubble = true; setzen, damit der event onmouseover nicht von dem umschließenden <div> in dein my.sub <div> fließt. Wenn du das nicht machen würdest, würde das Menü bei einem onmouseover des my.sub <div> zwar geöffnet, aber gleich von dem onmouseover des umschließenden <div>, welcher in der Hierarchie aufsteigen würde, geschlossen.

    Mehr zu popupmenüs, steht in der  Internet professionell 8/99. Wenn du dir das gesammte Objektmodell anschauen willst, kann ich dir den msdn-workshop unter http://msdn.microsoft.com/workshop/c-frame.htm#/workshop/author/default.asp empfehlen.

    Viel Spass beim ausprobieren

    Alexander Kiel