Autor Zpráva
Miky25
Profil *
Dobrý večer, mám jeden problém se zobrazením textu po kliknutí a poté s jeho sbalením.
Vysvětlím podrobněji:
Mám nějaké menu s kategoriemi, s podkategoriemi a s clanky.Kategorie je hlavni odkaz, podkategorie spadá pod kategorii a článek spadá pod podkategorii. Když kliknu na kategorii, vysune se mi podkategorie. Poté kliknu na podkategorii a vysune se mi článek. Když poté kliknu znova na podkategorii, tak články se mi zavřou. Když kliknu poté na kategorii, tak se mi zavřou podkategorie. Všechno toto mi funguje, ale když mám vše rozevřené a kliknu na kategorii, tak mi zůstanou otevřené články. A já bych právě chtěl zavřít kompletně vše.
Přidávám zdrojové kody:

HTML

<ul>
<li"><a href="#" onClick="zobrazSkryj('vice')">Kategorie aktual</a></li>
</ul>

<ul id="vice" class="skryvany">
<li class="podkategorie"><a href="#" onClick="zobrazSkryj('clanek')">podkategorie aktual</a></li>
</ul>

<ul id="clanek" class="skryvany" >
<li class="clanek"><a href="#">článek 1</a></li>
</ul>

CSS

.skryvany {display: none; text-decoration:none;}

JS

function zobrazSkryj(idecko){
el=document.getElementById(idecko).style;
el.display=(el.display == 'block')?'none':'block';
}

Určitě to nebude težké, ale v JS se vůbec nevyznám. Tento JS jsem našel na internetu a snažil jsem se to nějak zkombinovat, ale s tímhle si už nevím rady. Budu rád za každou odpověď.
Předem se omlouvám za název tématu. Nevěděl jsem jak to mám nazvat.
Miky25
Profil *
A nebo jestli znáte lepší způsob tak klidně budu rád, ale jde mi o to aby to bylo bez reloadu stránky.
Jan Knížek
Profil
Můžeš to udělat takhle:
<div id="vice" class="skryvany">
<ul>
<li class="podkategorie"><a href="#" onClick="zobrazSkryj('clanek')">podkategorie aktual</a></li>
</ul>

<ul id="clanek" class="skryvany" >
<li class="clanek"><a href="#">článek 1</a></li>
</ul>
</div> 

Je opravdu nutné mít tam seznamy? Pokud ne, je lepší třídy vkládat přes div. Stačí třídou vice obalit i clanek, ale bohužel, pokud otevres i clanek a pote cele zavres pres kategorie a pak otevres kategorie clanek se ti také otevře(což by nemuselo být na škodu, počítač by si pamatoval co si uživatel otevřel a co ne).
Pokud bys chtěl, aby se ti článek neotevíral, musel bys to řešit přes proměnné v JavaScriptu. Pokud by jsi chtěl, možná bych to také dokázal;)
p.s. možná existuje i daleko jednodušší řešení
Jan Knížek
Profil
jinak, jestli se chceš tím zabývat trochu více, doporučuji framework JQuery.
Miky25
Profil *
Jan Knížek:
Je opravdu nutné mít tam seznamy? Pokud ne, je lepší třídy vkládat přes div. Stačí třídou vice obalit i clanek, ale bohužel, pokud otevres i clanek a pote cele zavres pres kategorie a pak otevres kategorie clanek se ti také otevře(což by nemuselo být na škodu, počítač by si pamatoval co si uživatel otevřel a co ne).
Pokud bys chtěl, aby se ti článek neotevíral, musel bys to řešit přes proměnné v JavaScriptu. Pokud by jsi chtěl, možná bych to také dokázal;)
p.s. možná existuje i daleko jednodušší řešení

No problém je v tom, že to potřebuji přesně takhle. Něco má do sebe i to co jsi napsal, ale nejraději bych byl kdyby to bylo jak jsem psal
Jan Knížek
Profil
Tak jsem to předělal a již vše funguje.
<link rel="stylesheet" href="style.css" type="text/css" />
<ul>
<li"><a href="#" onClick="zobrazSkryj('vice', 'clanek')">Kategorie aktual</a></li>
</ul>

<ul id="vice" class="skryvany">
<li class="podkategorie"><a href="#" onClick="zobrazSkryj2('clanek')">podkategorie aktual</a></li>
</ul>

<ul id="clanek" class="skryvany">
<li class="clanek"><a href="#">článek 1</a></li>
</ul>
   
<script text='text/javascript'> 
function zobrazSkryj2(idecko){  
el=document.getElementById(idecko).style;
el.display=(el.display == 'block')?'none':'block';
} 

function zobrazSkryj(idecko, idecko2){ 
el=document.getElementById(idecko).style;
el.display=(el.display == 'block')?'none':'block';
el=document.getElementById(idecko2).style;
el.display='none';
} 
</script>

V mětodě ZobrazSkryj vložíš dvě ID(jedno pro pod kategorii a druhé pro článek), vtip je v tom, že vždy když se otevírá nebo zavírá hlavní kategorie, stačí články skrýt. Problém budeš mít ještě s těmi ID, protože ID stejného jména může být definováno jen jednou, takže budeš muset mít nakonec ten div nebo vnořené seznamy.

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