Hallo
DP
Ich hab hier eine Funktion, welche beim Klicken auf ein[*] ausgelöst wird. An die Funktion wird das geklickte[*] übergeben.
Dabei werden alle unter-li's angezeigt, oder wieder ausgeblendet, je nachdem was sie gerade sind. Nun wollte ich das ganze dahingehend erweitern, das alle anderen li's welche offen sind, ausgeblendet werden; sodass letzndlich immer nur ein Optionsmenu geöffnet ist. Vielleicht findet ihr den Wurm, ich hab schon etliche Varianten probiert und vom logischen her hätte es eigentlich schon längst gehen müssen ^^
Code:
function mShow(e)
{
if (!e.getElementsByTagName)
return;
var subobj = e.getElementsByTagName('li');
if (!subobj)
return;
for (j = 0; j < subobj.length; j++)
{
subobj[j].style.display = (subobj[j].style.display == 'block') ? 'none' : 'block';
}
var otherobj = document.getElementsByTagName('ul');
var otherliobj = otherobj.getElementsByTagName('li');
for (i = 0; i < otherliobj.length; i++)
{
otherliobj[i].style.display = 'block';
}
}
Aufgerufen wird das ganze wie folgt:
Code:
<ul id="menu">
<li id="opt1" class="show" onclick="mShow(this);">Options 1
<ul>[*][
url="#"]Item 1[/
url][*][
url="#"]Item 1[/
url][*][
url="#"]Item 1[/
url][*][
url="#"]Item 1[/
url][/list]
<li id="opt2" onclick="mShow(this);">Options 2
<ul>[*][
url="#"]Item 2[/
url][*][
url="#"]Item 2[/
url][*][
url="#"]Item 2[/
url][*][
url="#"]Item 2[/
url][/list]
<li id="opt3" onclick="mShow(this);">Options 3
<ul>[*][
url="#"]Item 3[/
url][*][
url="#"]Item 3[/
url][*][
url="#"]Item 3[/
url][/list]
<li id="opt4" onclick="mShow(this);">Options 4
<ul>[*][
url="#"]Item 4[/
url][*][
url="#"]Item 4[/
url][*][
url="#"]Item 4[/
url][*][
url="#"]Item 4[/
url][*][
url="#"]Item 4[/
url][/list] [/list]
Es klappt hiermit ja nichtmal, alle li's wieder auszublenden ... ich versteh das nicht o.O
MfG
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.