Popupmenü mit platzierten Grafiken

tut mir leid, das versteh ich nicht, wie meinst du das genau? also jetzt von der umsetzung her? du willst ja wahrscheinlich darauf hinaus, dass wenn mstat[mdepht] == "m1" ist, die erste ebene offen ist, aber das kann (soweit ich das sehe) aus zwei gründen nicht funktionieren: 1. die if schließt das aus (also die dritte if) und 2. ist das menü ja schon offen in dem durchgang, in dem theoretisch diese abfrage wahr werden würde
 
ok auch das habe ich gelöst :D

Code:
    if (mstat[mdepht] != mid) { 
        window.document.getElementById(mid).style.display = "block"; 
        	if (mid == "m1" || "m2" && mid != "mu1" && mid != "mu2") {
            window.document.getElementById(mid).style.paddingLeft = 50; 
            }
        mstat[mdepht] = mid;

das einzige problem was mir jetzt noch bleibt, ist das wenn ich menü 1 inklusive untermenüs ausgeklappt habe und dann auf menü2 wechsel oder menü1 einfach so zumache (kurz: wenn ich es irgendwie schließe) und dann wieder öffne sind die untermenüs immer noch offen...... woran liegt das? oder ist das so einfach dass ich das nicht sehe
 
Ich meinte ja, dass du mid abfragst...

Egal, kannst du mal den gesamten upgedateten Code incl. des HTML-Codes posten - ich verlier so langsam den Überblick... :-)

Wahrscheinlich musst du einfach die Funktion nochmal extra für die Untermenüs aufrufen.
 
Zuletzt bearbeitet:
klar np

Code:
<html> 
<head> 
<style type="text/css"> 
div { 
  width: 100px; 
} 
</style> 
<script type="text/javascript"> 
var mstat = new Array(); 

function menu( mid, mdepht) { 
    if (mstat[mdepht] == undefined) { 
        mstat[mdepht] = ""; 
    } 
    if (mstat[mdepht] != "" && mstat[mdepht] != mid) { 
        window.document.getElementById(mstat[mdepht]).style.display = "none"; 
    } 
    if (mstat[mdepht] != mid) { 
        window.document.getElementById(mid).style.display = "block"; 
        	if (mid == "m1" || "m2" && mid != "mu1" && mid != "mu2") {
            window.document.getElementById(mid).style.paddingLeft = 50; 
            }
        mstat[mdepht] = mid; 
    } else { 
        window.document.getElementById(mid).style.display = "none"; 
        mstat[mdepht] = "";
    } 
} 
</script> 
</head> 
<body> 

<a href="" onClick="menu('m1',1);return false;"><img src="../menu/images/background1.jpg"></a><br> 
<div id="m1" style="display:none;"> 
    <a href="" onClick="menu('mu1',2);return false;">Unterpunkt 1</a><br> 
    <div id="mu1" style="display:none;"> 
        <a href="">bla 1</a><br> 
        <a href="">bla 2</a> 
    </div> 
    <a href="sd">bla h3</a> 
</div> 
<a href="" onClick="menu('m2',1);return false;"><img src="../menu/images/background2.jpg"></a>
<div id="m2" style="display:none;"> 
    <a href="" onClick="menu('mu2',2);return false;">Unterpunkt 2</a><br> 
    <div id="mu2" style="display:none;"> 
        <a href="">bla 1</a><br> 
        <a href="">bla 2</a><br> 
    </div> 
    <a href="sd">bla 3</a> 
</div>
	</body> 
</html>
 
Das liegt an der Variablen Belegung - der Zustand (offen oder zu) wird ja im Array mstat für jeden Menüebene gespeichert - eine Unterebene wird aber in der funktion nirgends geschlossen.
 
Zum Bleistift so:
HTML:
<html><head>
   
   <style type="text/css"> 
   div { 
   	width: 100px; 
   } 
   </style> 
   
   <script type="text/javascript"> 
   var mstat = new Array(); 
   
   function menu(mid, mdepht) {
   	var obj = document.getElementById('m'+ mid);
   	if (mstat[mdepht] == undefined)
   		mstat[mdepht] = ""; 
   	if (mstat[mdepht] != "" && mstat[mdepht] != mid)
   		document.getElementById('m'+ mstat[mdepht]).style.display = 'none';
   	if (mstat[mdepht] != mid) { 
   		obj.style.display = 'block';
   		if ( uobj = document.getElementById('mu' + mid) ) {
   			uobj.style.display = 'none';
   			mstat[mdepht+1] = '';
   		}
   		mstat[mdepht] = mid; 
   	} else { 
   		obj.style.display = 'none'; 
   		mstat[mdepht] = '';
   	} 
   } 
   </script> 
   
   </head><body> 
   
   <a href="" onClick="menu(1,1);return false;"><img src="../menu/images/background1.jpg"></a><br> 
   <div id="m1" style="display:none;padding-left:50px"> 
   	<a href="" onClick="menu('u1',2);return false;">Unterpunkt 1</a><br> 
   	<div id="mu1" style="display:none;"> 
   		<a href="">bla 1</a><br> 
   		<a href="">bla 2</a> 
   	</div> 
   	<a href="sd">bla h3</a> 
   </div> 
   <a href="" onClick="menu(2,1);return false;"><img src="../menu/images/background2.jpg"></a>
   <div id="m2" style="display:none;padding-left:50px"> 
   	<a href="" onClick="menu('u2',2);return false;">Unterpunkt 2</a><br> 
   	<div id="mu2" style="display:none;"> 
   		<a href="">bla 1</a><br> 
   		<a href="">bla 2</a><br> 
   	</div> 
   	<a href="sd">bla 3</a> 
   </div>
   	
   </body></html>
 
Zuletzt bearbeitet:
Zurück