Autor | Zpráva | ||
---|---|---|---|
CZghost Profil |
#1 · Zasláno: 9. 3. 2014, 11:38:27
Neví někdo, jak mám odkázat z jednoho elementu na nadřazený? Mám odkaz, který po kliknutí vyvolá funkci měnící odrážku nadřazeného elementu položky seznamu (jedná se blokové víceúrovňové menu).
Kódy nyní vypadají následovně: <ul class="altmenu"> <li><a href="#stranka1" onclick="location.href=location.hostname+location.path+'stranka1.html'; return false;">Položka 1</a></li> <li class="altmenu-nextitem-collapsed"><a href="#podmenu" onclick="toggle('podmenu'); return false;">Položka 2</a> <ul class="altmenu-submenu" id="podmenu" style="display: none;"> <li><a href="#stranka2" onclick="location.href=location.hostname+location.path+'stranka2.html'; return false;">Položka 2.1</a></li> <li><a href="#stranka3" onclick="location.href=location.hostname+location.path+'stranka3.html'; return false;">Položka 2.2</a></li> </ul> </li> </ul> <script type="text/javascript"> function toggle(objectId) { var object = document.getElementById(objectId); if (object.style=='display: none;') object.style='display: block;'; else object.style='display: none;'; /* -------------- ↑ Toggle menu view | Toggle icon ↓ -------------- */ if (this.parent.className=='altmenu-nextitem-collapsed') this.parent.className='altmenu-nextitem-expanded'; else this.parent.className='altmenu-nextitem-collapsed'; }; </script> Potřeboval bych zjistit, jak se jmenuje objekt nadřazeného prvku, jestli existuje, a pokud ne, jak ho nasimulovat? this.parent jsem tam dal pouze na výplň, nevěřím, že nějaké "parent" existuje. V příručce JS od Yuhů se o objektu nadřazeného prvku vůbec nepíše...
|
||
Jan Tvrdík Profil |
Zkus
object.parentNode.className .
|
||
CZghost Profil |
Zdá se, že teď nefunguje ani jedno. Proměnnou jsem odstranil, odkazuju přímo přes parametr, přidal jsem další parametr do funkce (id nadřazeného prvku). parentNode jsem vymazal, odkazuju prostřednictvím druhého parametru.
V Chromu se mi nechce měnit ani jedna funkce, jiné prohlížeče jsem ještě netestoval. Kód javascriptu vypadá následovně: function toggle(objectId,parentId) { if (document.getElementById(objectId).style=='display: none;') document.getElementById(objectId).style='display: block;'; if (document.getElementById(objectId).style=='display: block;') document.getElementById(objectId).style='display: none;'; /* -------------- ↑ Toggle menu view | Toggle icon ↓ -------------- */ if (document.getElementById(parentId).className=='altmenu-nextitem-collapsed') document.getElementById(parentId).className='altmenu-nextitem-expanded'; if (document.getElementById(parentId).className=='altmenu-nextitem-expanded') document.getElementById(parentId).className='altmenu-nextitem-collapsed'; }; Pro jistotu uvádím odkaz na živou ukázku (samotný kód zde). Ani v Opeře to nejde. Kde se stala chyba? EDIT: Zdá se, že samotný příkaz funguje úplně jinak, než jsem očekával. V Chromu, který jako jediný nabízí vývojářské nástroje jsem zjistil, že přiřazovací příkaz, krerý aplikuju na submenu pouze vypíše novou hodnotu do konzole. Kód nehází žádnou chybu, ale submenu se prostě ne a ne objevit. Existuje nějaká alternativa, která by mohla fungovat? |
||
Jan Tvrdík Profil |
#4 · Zasláno: 9. 3. 2014, 13:32:55
CZghost:
Jo vidíš, toho jsem si ani nevšiml =) object.style='display: block;' je blbost, správně je to object.style.display = 'block'
|
||
Chamurappi Profil |
#5 · Zasláno: 9. 3. 2014, 13:33:44
Reaguji na CZghosta:
„ if (object.style=='display: none;') “
Co to je za nesmysl? Ve style je objekt, ne řetězec.
„V Chromu, který jako jediný nabízí vývojářské nástroje“ Vývojářské nástroje jsou dnes už ve všech prohlížečích. |
||
CZghost Profil |
#6 · Zasláno: 9. 3. 2014, 15:23:38
Jan Tvrdík:
Děkuju, jsem to ale blbec =D Chamurappi: „Vývojářské nástroje jsou dnes už ve všech prohlížečích.“ V Opeře nejsou, nebo nevím, jak je vyvolat. Mám nejnovější verzi (automaticky aktualizovanou, na Win XP) „Co to je za nesmysl? Ve style je objekt, ne řetězec.“ To už vlastně napsal kolega Jan Tvrdík výše. Ten style jsem opravil, ale stále to nefunguje, ani tehdy, když odstraním return false. |
||
Radek9 Profil |
#7 · Zasláno: 9. 3. 2014, 16:07:03
CZghost:
„V Opeře nejsou“ Jsou. Minimálně jsou vypsané v menu, stačí trochu hledat. Klávesová zkratka je Ctrl+Shift+I. |
||
CZghost Profil |
#8 · Zasláno: 9. 3. 2014, 19:06:25
Radek9:
Děkuju, už jsem je objevil =) Jenže na problému s funkčností to moc nevylepšilo... |
||
Časová prodleva: 3 dny
|
|||
CZghost Profil |
Upravil jsem kód pro mobilní menu následovně:
function toggle(objectId,parentId) { document.getElementById(objectId).style.display=document.getElementById(objectId).style.display=='none'?'block':'none'; /* -------------- ↑ Toggle menu view | Toggle icon ↓ -------------- */ document.getElementById(parentId).className=document.getElementById(parentId).className=='mobilemenu-nextitem-collapsed'?'mobilemenu-nextitem-expanded':'mobilemenu-nextitem-collapsed' }; |
||
Časová prodleva: 10 let
|
0