Hi,
versuch das mal (siehe unten).
Sorry, hab deine Anfrage nur ueberflogen, daher das Missverstaendnis.
Entscheidend is die Schleife, und dass du verstehst was da passiert ...
while(elem.parentNode != null)
{
elem = elem.parentNode;
if(elem.id != null && elem.id == "menu")
return;
}
Es wird vom geklickten Element mittels parentNode immer zu dessen Vater gesprungen. Kommt man auf dem Pfad am table-Element vorbei, dann spring aus der Funktion mit return (d.h. es wird nix gemacht!).
Wird die Scheife ganz durchgelaufen (hier bis zum document-Objekt, wleches kein Parent hat), dann wird die letzte Zeile noch ausgefuehrt, da das "return" nie ausgefueht wird -> verstecken.
Hope this helps
Kann man sicher noch besser machen, aber das is ein funktionierendes (?) Bsp.
<body>
<a href="#" id="menulink" onMouseUp="showmenu(event)">
Link 1
</a>
<table id="menu" class="menu">
<tr>
<td valign="middle">
Sequenz:
</td>
<td valign="middle">
<input type="text" style="font-size:9px; width:25px; height:10px;" maxlength="4">
</td>
<td>
<a href="http://www.selfhtml.org">
OK
</a>
</td>
</tr>
</table>
<script language="javascript" type="text/javascript">
document.onmousedown = hidemenu;
function showmenu(event){
//event = event || window.event; // unnoetig solang event nicht benutzt wird
//elem = event.target || event.srcElement; // unnoetig solang event nicht benutzt wird
document.getElementById("menu").style.display = "block";
}
function hidemenu(event)
{
event = event || window.event;
elem = event.target || event.srcElement;
while(elem.parentNode != null)
{
elem = elem.parentNode;
if(elem.id != null && elem.id == "menu")
return;
}
document.getElementById("menu").style.display = 'none';
}
</script>
</body>