Hallo,
<div id = "menuesearch">
<div id = "menue" onclick="toggle_visibility('navi');">
</div>
<div id = "sfm" onclick="toggle_visibility('sboxm'); nomenue();">
</div>
</div>
Das ist schon ganz richtig gedacht (die Umsetzung von nomenu scheint dir noch zu fehlen).
Deine Anforderungen vollständig umgesetzt, soweit ich sie verstanden habe:
`<div id="menue-button" onclick="[code lang=javascript]toggle('menue'); hide('search');`{:.language-html}">…</div>
<div id="search-button" onclick="`toggle('search'); hide('menue');`{:.language-javascript}">…</div>[/code]
Die Bezeichner habe ich kurzerhand geändert, es geht bloß darum, was beim Klick alles passieren muss.
Die toggle-Funktion hast du schon (toggle\_visibility), also fehlt nur die hide-Funktion.
> Das ist mein bisheriges Script (ehrlich gesagt auch nur aus dem Inet zusammengebastelt)
Wenn du in die Funktion toggle\_visibility schaust, siehst du, wie das Verstecken geht.
> function toggle\_visibility(id) {
> var e = document.getElementById(id);
Holt das Element mit der angegebenen ID.
> if(e.style.display == 'block')
Prüft, ob der CSS-Inline-Style »display« den Wert »block« hat. Siehe <http://de.selfhtml.org/css/eigenschaften/positionierung.htm#position@title=display in SELFHTML>.
»block« steht hier für sichtbar (kennst du aus CSS wahrscheinlich).
> e.style.display = 'none';
Falls das Element sichtbar ist, verstecke es. Ändere den display-Wert auf none.
> else
> e.style.display = 'block';
Andernfalls zeige das Element an. Ändere den display-Wert auf block.
Jetzt sollte klar werden, wie du ein Element verstecken kannst und wie eine hide-Funktion aussehen kann:
~~~javascript
function hide(id) {
var e = document.getElementById(id);
e.style.display = 'none';
}
Dann lässt sich hide('menue')
bzw. hide('search')
aufrufen. Für »menu« und »search« sind natürlich deine IDs einzusetzen.
Disclaimer: Das ist äußerst vereinfacht. Es gibt andere, letztlich bessere Methoden, um die Sichtbarkeit eines Elements zu ändern, z.B. das Hinzufügen/Entfernen einer Klasse mit entsprechenden Formatierungen im Stylesheet. Die erfordern aber mehr als ein paar Zeilen JavaScript.
Mathias