Autor Zpráva
Timo
Profil *
Zdravím,

mám tento js kód:


      <!--

function ukaz(id) {
if (document.getElementById("show_"+id).style.display == ""){
show = "none";
}
else{
show = "";
}
document.getElementById("show_"+id).style.display = show;
}
-->


Ten slouží na zobrazování a skrývání některých částí stránky (konkrétně menu). Problém spočívá v tom, že když si zobrazím určitou část a kliknu na odkaz, tak po načtení požadované stránky se mi zobrazená část opět skryje a já chci, aby zůstávala zobrazená do té doby, než ji uživatel sám neskryje.
peta
Profil
Pri znovunacteni stranky se nastavi puvodni nastaveni, jako pred zmenou.
Abys to ulozil, musis nastavit naco do PHP SESSION / PHP COOKIE nebo JS COOKIE nebo neco ulozit do databaze nebo na server a nebo poslat nastaveni pres GET. JS nedotkaze ukladat data jinam nez do cookies nebo odesilat ven.
jakpsatweb - javascript - priklady - gethttpvars
jakpsatweb - javascript - priklady - cookies
Timo
Profil *
peta: díky, to by snad mohlo stačit. Prostuduju a vyzkouším
Timo
Profil *
tak na to koukám a nejsem z toho příliš moudrý.. JS není moje silná stránka.

gethttpvars určitě používat nechci a ty JS cookies mi nejsou moc jasné... Kdyby mě někdo trochu nakopl, byl bych vděčný :)
one_k
Profil
Timo
ulozis do Cookie hodnotu a pak ji na kazde strance z cookie prectes..
Yrrah
Profil
Tak to prostě posílej jako parametr URL, když nechceš používat cookie.
Timo
Profil *
Yrrah: právě bych radši používal cookie... Akorát si to musím někde nastudovat, tady z těch příkladů jsem moc nepobral a na netu jsem zatím taky nic moc nenašel. Hodil by se nějaký menší vzor, kdyby se tu našel nějaký JS guru ;)
peta
Profil
Timo
www.volny.cz/peter.mlich
pouzivam to na zmenu stylu. Proste zavolas funkci cookies, ktera ti do promenne da vysledek.
a = funkceCookies("nazev");
a jde tam proste ukladat textovy retezec. Povolene znaky jsou viz nejaka literatura. =; se myslim pouzivaji jako oddelovace. Cili, kdyz chces ulozit vicerozmerne pole, tak pouzijes nejaky pole.join(",") podle znaku treba carka, ktery se nepouziva jako oddelovat ani pro hodnoty.
Ale s temi delicimi zneky si ted nejsem jist, prostuduj script.
V pripade toho skinu tam ukladam jen
cookies["petova stranka"] = "skin = mujskin;";
Mozna by to slo takto napsat, to jen jako priklad. Ze mam cookies pojmenovane "petova stranka" a obsahuje retezec "skin = mujskin;", pripadne nejake udaje o casu smazani cookies atd
Timo
Profil *
Tak už nevím... javascript není opravdu moje silná stránka (kdybch to řešil přes php - což je nesmysl - tak bych přesně věděl, jak na to), tady už několik hodin zkouším různé finty, co jsem vyčetl na netu a bez výsledku. Buď mi přestane zobrazování fungovat úplně, nebo cookies nefungují a menu se vždy sroluje zase zpátky... Abych uvedl celý kód, tak tohle je, dejme tomu, ono zobrazované/skrývané menu:


<div class="trida"><a href="javascript:void(0)" onclick="ukaz(1)" class="trida">Kategorie menu</a></div>
<div class="trida2" id="show_1" style="display: none;">
<br />
<a href="#">odkaz 1</a><br />
<a href="#">odkaz 2</a><br />
<a href="#">odkaz 3</a><br />
<a href="#">odkaz 4</a><br />
<a href="#">odkaz 5</a><br />
<a href="#">odkaz 6</a>
</div>


Nad tím samozřejmě JS script, který skrývání/odkrývání umožňuje (v prvním příspěvku).. A teď, jak do toho zakomponovat ty cookies..

Už jsem z toho zoufalý a nevím si rady a hlavně, kdybych nemusel, tak to takhle neřeším, ale není zbytí. Stačil by odkaz na web s podobným řešením vyditelným scriptem... Zatím hledám, ale marně :(
Timo
Profil *
Tak si k tomu stačilo sednout v rozumnou dobu a ihned jsem přišel na řešení... Až jsem se trošku zastyděl, že mě to nenapadlo hned :D
Takže: přes javascript uložím při kliknutí cookie, který pak ověřím na stránce přes php.. A je vyhráno :)

Celé to vypadá takhle: javascript

<!--
function ukaz(id) {
if (document.getElementById("show_"+id).style.display == ""){
show = "none";
document.cookie = "show_"+id+" = "+show;
}
else{
show = "";
document.cookie = "show_"+id+" = "+show;
}
document.getElementById("show_"+id).style.display = show;
}
-->


a na stránce jsem jen přidal ověření cookies místo display: none:


if (isset($_COOKIE['show_1'])) {echo $_COOKIE['show_1'];} else {echo "none";}


A funguje to... No jo, to je to bastlení po nocívh, poprípadě v ranních hodinách...
peta
Profil
Timo
ano, i tak to jde. Jen ty cookies se pak stale odesilaji, kdyz se maji zpracovavat pres php.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0