Hallo,
ich brauche keine javascript-freie Alternative, da ich vorher abprüfe ob javascript enabled ist. Das ist sowieso zwingend notwendig für die Seite.
Das mit dem ul-name tag. Ich habe das Ganze jetzt folgendermaßen umgeschrieben:
function task_menu_drop_switch(id){
var element = document.getElementById("task_menu_switch").getElementsByTagName("li")[id].getElementsByTagName("ul")[0];
if (element.style.display != "block"){
element.style.display = "block";
}else{
element.style.display = "none";
}
}
<ul class='menu' id='task_menu_switch'>
<li><a>Löschen</a></li>
<li onclick='task_menu_drop_switch(1)'><a>Neu</a>
<ul>
<li><a>Link</a></li>
<li><a>Link</a></li>
<li><a>Link</a></li>
</ul>
</li>
</ul>
Perfomanceprobleme dürfte es keine geben, da nur 4-5 Unteritems durchsucht werden müssen.
Das eigentliche Problem ist damit aber trotzdem nicht gelöst. Die übergeordnete li-Box wird nach einem Klick immernoch größer, obwohl ich nichts daran ändere.
Hat jemand eine Lösung dafür?
Vielen Dank schon im voraus,
luckger
@@luckger:
Das Untermenü ist per css default auf display:none gesetzt.
Damit ist deine Navigation also unbrauchbar; Nutzer bekommen gar kein Untermenü angezeigt. (Außer den wenigen, die zufällig JavaScript aktiviert haben.)
Navigation muss ohne optionale Technologie, die bei vielen nicht zu Verfügung steht, auskommen! Kommt sie auch: CSS only drop-down menu
Wenn ich nun auf den Button drücke, wird das Untermenü wunderbar angezeigt.
Eher wunderlich als wunderbar, wo das 'ul'-Element gar kein 'name'-Attribut haben darf. 'document.getElementsByName()' ist daher äußerst abenteuerlich. Und böse unperformant. Wozu den ganzen Elementbaum nach allen Elementen mit diesem 'name'-Attribut absuchen?
weiß da jemand Rat was ich falsch mache?
Du benutzt JavaScript zur Navigation – ohne eine JavaScript-freie Alternative anzubieten.
Du hast dein HTML-Quelltext nicht validiert.
Live long and prosper,
Gunnar