Autor Zpráva
Papouch
Profil
Potreboval bych, zda by nekdo odbornym okem nezkontroloval nize uvedene robalovaci menu. Idea je takova, ze podmenu by se mela rozbalovat a sbalovat az po kliku a v pripade, kdy nebude javascript k dispozici, zustane menu naporad rozbalene. Zkousel jsem to v beznych prohlizecich a zda se, ze to docela funguje. Zkousel jsem i jina komplikovanejsi reseni, ale ta mi vzdy ve starsich porohlizecich (napr. Netscape 4.72) hlasila nejake chyby. Tohle reseni mi prijde jednoduche a snad dostacujici.

funkce:
<script LANGUAGE="JavaScript">
function show(ide) {
var element=null;
if (document.getElementById) {
element=document.getElementById(ide);
}
else if (document.all) {
element=document.all[ide];
}
else if (document.layers) {
element=document.layers[ide];
}
if (element) {
if (element.style) {
(element.style.display!='none') ? element.style.display = 'none' : element.style.display = 'block';
}
else {
// zatim nic
}
}
return;
}
//-->
</script>

vlastni menu:
<ul>
<li><a href='#' onclick='show("submenu1")'>Item 1&nbsp;&raquo;</a>
<ul id="submenu1">
<li><a href='#'>Item 1.1</a></li>
<li><a href='#'>Item 1.2</a></li>
</ul>
</li>
<li><a href='#' onclick='show("submenu2")'>Item 2&nbsp;&raquo;</a>
<ul id="submenu2">
<li><a href='#'>Item 2.1</a></li>
<li><a href='#'>Item 2.2</a></li>
</ul>
</li>
<li><a href='#'>Item 3</a></li>
</ul>
<script LANGUAGE="JavaScript">
show("submenu1");
show("submenu2");
</script>
peta
Profil
Mozna bych pridal funkci, ktera akci onclick a id prida automaticky pro cele menu s nejakym id. Odlehci se HTML kod, prida se asi 5 radku JS. Co do objemu je to asi tak stejne.
Mozna bych zmenil funkci takto:

function show(ide) {
var element = (document.getElementById) ? document.getElementById(ide) :
(document.all) ? document.all[ide] : (document.layers) ? document.layers[ide] : null;
if (element && element.style) {
element.style.display = (element.style.display!='none') ? 'none' : 'block';
}
else {
// zatim nic
}
return true;
}


Kazdopadne chybne tam mas jen, kdyz pouzijes odkaz, ktery nikam neodkazuje.
Papouch
Profil
Fajn. Dobra zprava, ze tam neni zadna "bota". K tomu kompaktnejsimu zapisu funkce bych se mozna casem take dostal, ale s javascriptem teprve zacinam, a takto to pro me bylo prehlednejsi.

Ty odkazy budou samozrejme funkcni a korektne odkazujici, ale pro ukazku menu to nemelo vyznam vyplnovat.

Jeste by me zajimala jedna vec, ktera spise souvisi s CSS. Zkousel jsem to menu nastylovat pres ul{margin-left: 15px; padding: 0;} a
li{margin-left: 10px;}. Vsude to fungovalo pekne, zase az na stary Netscape 4.72. Tam se ten styl na seznamy vubec neaplikoval. Protoze ten skript by mel fungovat obecne i na jine blokove elementy, tak jsem zkusil to menu prepsat pres divy a tam to fungovalo i v tom starickem Netscapu. Otazka je, jestli to neni zbytecne drbani se pres hlavu a jestli neni lepsi se proste na ty stare prohlizece vykaslat. To menu pres seznamy mi totiz prijde jaksi logictejsi.

Jeste ukazka toho menu pres divy.

<div><a href='#' onclick='show("submenu1")'>Item 1&nbsp;&raquo;</a></div>
<div id="submenu1" style="margin: 0 10px">
<div><a href='#'>Item 1.1</a></div>
<div><a href='#'>Item 1.2</a></div>
</div>
<div><a href='#' onclick='show("submenu2")'>Item 2&nbsp;&raquo;</a></div>
<div id="submenu2" style="margin: 0 10px">
<div><a href='#'>Item 2.1</a></div>
<div><a href='#'>Item 2.2</a></div>
</div>
<div><a href='#'>Item 3</a></div>
<script LANGUAGE="JavaScript">
show("submenu1");
show("submenu2");
</script>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0