• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Treemenü bleibt nicht offen

hermann

Neues Mitglied
Hallo!
Ich habe hier ein tree menu script , welches ich soweit modifiziert habe, dass es meinen Ansprüchen genügt. Mein einziges Problem ist, dass es bei einem Klick auf eines der Submenüs (wie in meinem Beispiel bei analogue -> 1 ) sich die neue Seite lädt und das Menü sich wieder schließt, ich will aber, dass es offen bleibt. Bloß weiß ich nicht, was ich ändern soll. Danke schonmal im voraus.


Und noch eine Frage hätte ich, würde das Ganze auch in allen Browsern funktionieren?
Quellcode
<head>

<link rel=stylesheet href=./index.css type=text/css>
<script language=JavaScript>
<!--
content = new Array ();

content [0] = new Array (
false,
new Array('sub_0_1','sub_0_2','sub_0_3')
);
content [1] = new Array (
false,
new Array('sub_1_1','sub_1_2','sub_1_3')
);
content [2] = new Array (
false,
new Array('sub_2_1','sub_2_2','sub_2_3')
);

isOPERA = (navigator.userAgent.indexOf('Opera') >= 0)? true : false;
isIE = (document.all && !isOPERA)? true : false;
isDOM = (document.getElementById && !isIE && !isOPERA)? true : false;

function processTree (id)
{
if (content [id][0])
{
for (i = 0; i < content [id][1].length; i++)
hide (content [id][1]);

content [id][0] = false;
}
else
{
for (i = 0; i < content [id][1].length; i++)
show (content [id][1], 'table-row');

content [id][0] = true;
}

return false;
}

function show (id, displayValue)
{
if (isDOM)
document.getElementById(id).style.display = (displayValue)? displayValue : "block";
else if (isIE)
document.all[id].style.display = "block";
}

function hide (id)
{
if (isDOM)
document.getElementById(id).style.display = "none";
else if (isIE)
document.all[id].style.display = "none";
}
if (isDOM || isIE)
{
document.writeln('<style type="text/css">');
document.writeln('.SubItemRow { display: none; }');
document.writeln('</style>');
}

// -->
</script>

</head>

<body>



<table>

>




<tr>
<td> <p><font size="2">Photography</font></td></tr>
<tr>

<td><a href=./ class=Item onClick="processTree (0); return false;">analogue</a></td>
</tr>
<tr id='sub_0_1' class=SubItemRow>

<td class=SubItem><a href="http://tumblr.com/">1</a></td>
</tr>
<tr id='sub_0_2' class=SubItemRow>

<td class=SubItem><a href="http">2</a></td>
</tr>
<tr id='sub_0_3' class=SubItemRow>

<td class=SubItem><a href="http">3</a></td>
</tr>
<tr>

<br>

<td><a href=./ class=Item onClick="processTree (1); return false;">digital</a></td>
</tr>
<tr id='sub_1_1' class=SubItemRow>

<td class=SubItem><a href="http">1</a></td>
</tr>
<tr id='sub_1_2' class=SubItemRow>

<td class=SubItem><a href="http">2</a></td>
</tr>
<tr id='sub_1_3' class=SubItemRow>

<td class=SubItem><a href="http">3</a></td>
</tr>

</table>

</body>

 
Zuletzt bearbeitet:
Danke für die Antwort,

eine Frage hätte ich noch.
Was müsste ich am Quellcode ändern, wenn ich zwar will, dass man durch draufklicken auf das Menü, das Ganze wieder zusammenklappen kann, aber will, dass es von Anfang an geöffnet ist?
 
Vermutlich das hier auf display: block; ändern...

Code:
document.writeln('.SubItemRow { display: none; }');

...und ganz am Anfang die false-Werte auf true.

Code:
content [0] = new Array (
false,
new Array('sub_0_1','sub_0_2','sub_0_3')
);
content [1] = new Array (
false,
new Array('sub_1_1','sub_1_2','sub_1_3')
);
content [2] = new Array (
false,
new Array('sub_2_1','sub_2_2','sub_2_3')
);

Nicht getestet.
 
Zurück
Oben