Skrytie po aktualizovaní. – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Skrytie po aktualizovaní. – JavaScript, AJAX, jQuery – Fórum – Programujte.comSkrytie po aktualizovaní. – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Battery
~ Anonymní uživatel
12 příspěvků
26. 9. 2010   #1
-
0
-

Dobrý deň, mám jednu otázku, mám kód:

<script type="text/javascript">

function showElement(layer){
var myLayer = document.getElementById(layer);
if(myLayer.style.display=="none"){
myLayer.style.display="block";
myLayer.backgroundPosition="top";
} else {
myLayer.style.display="block";
}
}
</script>


V DIV pri menu mám nastavené
style="display:none;"
, čo znamená že, ak si to rozkliknem, zobrazí požadované menu. A mám problém, že ak je kliknuté na položku, vykoná sa akcia, teda sa presmeruje na požadovanú sekciu, tak sa toto menu zavrie. Chcel by som sa spýtať, akým spôsobom by som docielil toho, aby si script zapamätal pozíciu menu, t.j. aby sa menu nezatváralo, pokiaľ to užívateľ nepovolí, dúfam že som to vysvetlil jasne a bol by som vďačný, ak by mi niekto predviedol nejaký príklad, keďže sa v JavaScripte nevyznám.


Ďakujem!

Nahlásit jako SPAM
IP: 95.105.197.–
Reklama
Reklama
Battery
~ Anonymní uživatel
12 příspěvků
26. 9. 2010   #2
-
0
-

Oprava scriptu:

<script type="text/javascript">

function showElement(layer){
var myLayer = document.getElementById(layer);
if(myLayer.style.display=="none"){
myLayer.style.display="block";
myLayer.backgroundPosition="top";
} else {
myLayer.style.display="none";
}
}
</script>


Pomôžte prosím!

Nahlásit jako SPAM
IP: 95.105.197.–
m->29+6
Super člen
26. 9. 2010   #3
-
0
-

Stránky si medzi sebou neprenášajú premenné, takže možno pomocou Cookies. Prípadne dnes pomocou úložiska prehliadača, ale Cookies sú asi viac spätne kompatibilné. Vždy keď rozklikneš menu tak si do Cookies uložíš, ktoré je to menu a pri načítaní ďalšej stránky si to z tej Cookies načítaš a podľa toho zobrazíš.

Nahlásit jako SPAM
IP: 90.177.12.–
Battery
~ Anonymní uživatel
12 příspěvků
26. 9. 2010   #4
-
0
-

Aha, takže sa to asi inak nedá (ani keď sa jedná o prihláseného užívateľa?)...
A bolo by možné mi ukázať nejaký názorný príklad na ukladanie do cookies?

Nahlásit jako SPAM
IP: 95.105.197.–
m->29+6
Super člen
26. 9. 2010   #5
-
0
-

Includneš si ten súbor čo som priložil a potom toto:

Cookies.set("menuID", "menu#2");

var menuID = Cookies.get("menuID");

Nahlásit jako SPAM
IP: 90.177.12.–
Battery
~ Anonymní uživatel
12 příspěvků
26. 9. 2010   #6
-
0
-

aha a ako to zapracovať do toho kódu?

Nahlásit jako SPAM
IP: 95.105.197.–
Battery
~ Anonymní uživatel
12 příspěvků
26. 9. 2010   #7
-
0
-

Samozrejme že tam mám aj :

<a href="#" class="button" onclick="javascript:showElement('menu')">

Nahlásit jako SPAM
IP: 95.105.197.–
Battery
~ Anonymní uživatel
12 příspěvků
26. 9. 2010   #8
-
0
-

Includoval som to, ale neviem, kam umiestniť

Cookies.set("menuID", "menu#2");

var menuID = Cookies.get("menuID");


P.S. robím to v TPL , ale nemal by to byť problém, len by som potreboval inštruktáž lebo sa JavaScipte nevyznám!

Nahlásit jako SPAM
IP: 95.105.197.–
m->29+6
Super člen
26. 9. 2010   #9
-
0
-

<script type="text/javascript">

function showElement(layer){
Cookies.set("menuID", layer);

var myLayer = document.getElementById(layer);
if(myLayer.style.display=="none"){
myLayer.style.display="block";
myLayer.backgroundPosition="top";
}
else {
myLayer.style.display="none";
}
}
</script>
<body onload="showElement(Cookies.get("menuID"));">

<a href="/path/to/menu.html" class="button" onclick="showElement('menu'); return false;">

Nahlásit jako SPAM
IP: 90.177.12.–
Battery
~ Anonymní uživatel
12 příspěvků
26. 9. 2010   #10
-
0
-

takto to mám celkovo riešené:

        <a href="#" class="button" onclick="javascript:showElement('zabava')">

<div id="column_dark_content_top">
<div id="column_dark_content">

<div id="menu_head5"><font color="white">Zábava</font></div>
</a>
<div id="menu_content">
{if $uvitanie == "0"}
<ul id="zabava" style="display:none;">
<li><a href="index.php?p=polozka1">- polozka1</a></li>
<li><a href="index.php?p=polozka2">-polozka2r</a></li>
<li><a href="index.php?p=polozka3">- polozka3</a></li>
<li><a href="index.php?p=polozka4">-polozka4</a></li>
<li><a href="index.php?p=polozka5">- polozka5</a></li>
</ul>
{/if}
</div>
<div id="menu_content_bottom"> </div>
</div>
<div id="column_dark_content_bottom"> </div>
</div>





{literal}
<script type="text/javascript">
function showElement(layer){
var myLayer = document.getElementById(layer);
if(myLayer.style.display=="none"){
myLayer.style.display="block";
myLayer.backgroundPosition="top";
} else {
myLayer.style.display="none";
}
}
</script>
{/literal}

Okrem "Zabava" mám aj napr. "Úvod" a iné, teda MENU nemám externé tzn. cestu k menu.html nemôžem zadať, to "#" je tam dané len preto, aby sa obsah neaktualizoval.
a to body by sa malo pridať len na začiatku?

Nahlásit jako SPAM
IP: 95.105.197.–
Battery
~ Anonymní uživatel
12 příspěvků
26. 9. 2010   #11
-
0
-

Každý celok aj zábava aj úvod, aj iné sú oddelené a pod sebou, na úplnom konci je len definovaný JavaScipt

Nahlásit jako SPAM
IP: 95.105.197.–
Battery
~ Anonymní uživatel
12 příspěvků
27. 9. 2010   #12
-
0
-

Mohol by si mi ešte raz pomôcť Ďakujem!

Nahlásit jako SPAM
IP: 87.197.16.–
m->29+6
Super člen
27. 9. 2010   #13
-
0
-

Tú cestu som tam dal schválne. Celkom sa tam hodí nejaký odkaz na rozcestie, pretože ak niekto nemá zapnutý alebo nepodporuje JS tak sa nemá ako dostať do submenu.

<body onload="showElement(Cookies.get("menuID"));">

...
<a href="/path/to/zabava_submenu.html" class="button" onclick="showElement('zabava'); return false;">
<a href="#" class="button" onclick="javascript:showElement('zabava')">
<div id="column_dark_content_top">
<div id="column_dark_content">

<div id="menu_head5"><font color="white">Zábava</font></div>
</a>
<div id="menu_content">
{if $uvitanie == "0"}
<ul id="zabava" style="display:none;">
<li><a href="index.php?p=polozka1">- polozka1</a></li>
<li><a href="index.php?p=polozka2">-polozka2r</a></li>
<li><a href="index.php?p=polozka3">- polozka3</a></li>
<li><a href="index.php?p=polozka4">-polozka4</a></li>
<li><a href="index.php?p=polozka5">- polozka5</a></li>
</ul>
{/if}
</div>
<div id="menu_content_bottom"> </div>
</div>
<div id="column_dark_content_bottom"> </div>
</div>





{literal}
<script type="text/javascript">
function showElement(layer){
Cookies.set("menuID", layer);

var myLayer = document.getElementById(layer);
if(myLayer.style.display=="none"){
myLayer.style.display="block";
myLayer.backgroundPosition="top";
}
else {
myLayer.style.display="none";
}
}
</script>
{/literal}
Samozrejme v hlavičke musíš mať prilinkovaný ten súbor cookies.js.
<script src="/path/to/cookies.js" type="text-javascript"></script>

Nahlásit jako SPAM
IP: 90.177.12.–
Battery
~ Anonymní uživatel
12 příspěvků
27. 9. 2010   #14
-
0
-

Ahoj, naozaj neviem, kde robím chybu, "cookies.js" som includoval do hlavičky.
JavaScript som pozmenil presne podľa teba medzi tagy {literal} a {/literal}
telo stránky som dal na začiatok kódu.
Tento kód som vynechal, keďže chcem aby tam ľudia pristupovali s povoleným javascriptom:

<a href="/path/to/zabava_submenu.html" class="button" onclick="showElement('zabava'); return false;">


Bežím na localhoste, ale neviem či to môže spôsobiť problém...
Všetko ide, ako išlo po prejdení na inú sekciu, sa menu zavrie.

Nahlásit jako SPAM
IP: 95.105.197.–
m->29+6
Super člen
27. 9. 2010   #15
-
0
-

No neviem kód máš a teraz už len treba nájsť chybu. Skús otvoriť konzolu JavaScriptu vo Firefoxe alebo Opere, prípadne si stiahni Firebug do Firefoxu a tam ti chybu nájde. Skontroluj cookies, či ti tú cookie ozaj aj uložilo a podobne. Jednoducho ladenie :-D Veľa šťastia.

Nahlásit jako SPAM
IP: 90.177.12.–
Battery
~ Anonymní uživatel
12 příspěvků
27. 9. 2010   #16
-
0
-

No, ok skúsim to, poprípade sa zas ozvem :D

Nahlásit jako SPAM
IP: 95.105.229.–
Battery
~ Anonymní uživatel
12 příspěvků
27. 9. 2010   #17
-
0
-

Ďakujem Ti!
Podarilo sa mi nájsť chybu, keby sa dalo, ako by bolo možné, zapamätať si viac otvorených menu naraz?

Nahlásit jako SPAM
IP: 95.105.229.–
m->29+6
Super člen
28. 9. 2010   #18
-
0
-

Tak, že si ich viac uložíš a potom viac zobrazíš.

Cookies.set("menuID1", "menu#2");

Cookies.set("menuID2", "menu#4");
...
var menuID = Cookies.get("menuID1");
var menuID = Cookies.get("menuID2");
...

Nahlásit jako SPAM
IP: 90.177.12.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 20 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý