Autor Zpráva
Mishoo
Profil *
Zdravím,

potrebujem vyriešiť jednu takú vec :)
Nie som zrovna expert do js a preto píšem sem :) Potrebujem asi niečo také aké je na Facebooku - keď kliknete na ,,zemegulu" pre zobrazenie upozornení (prípadne správ atd)..
Inak povedané potrebujem aby sa o kliknutí v hlavnom menu jednak daná položka menu javila ako aktívna (napríklad pomocou :focus) a zároveň sa objavilo to okno pod touto položkou.. Avšak akonáhle kliknem mimo týchto dvoch prvkov (položka menu, okno) sa oba prvky schovajú :)

Nechcem žiadne grafické riešenia len konkrétny js kód a prípadne ukážky toho čo mám v súvislosti s js vložiť do kódu HTML (položka menu, okno)..

Ďakujem pekne :)
Str4wberry
Profil
Nedávno, jsem tu někomu odkazoval tuto ukázku. Stačí obyčejné přepínání třídy.

Aby to fungovalo jako na Facebooku, bylo by ještě potřeba doplnit skrývání při kliknutí někam mimo.
Mishoo
Profil *
Dík, a to doplnenie po kliknutí mimo ako spravím?
Str4wberry
Profil
To už je trochu složitější, zkusil jsem to popsat.
Chamurappi
Profil
Reaguji na Str4wberryho:
<a onclick="funkce(event)" href="#">Rozbalit</a>
V tomto případě se event předá do funkce ve všech prohlížečích stejně. V Mozille tam bude lokální proměnná event, v Exploreru globální window.event. Pak není nutné sjednocovat uvnitř funkce.
_es
Profil
Str4wberry:
function nazevFunkce(e) {
    var e = e || window.event; // sjednocení pro Firefox
Argument e je zároveň aj lokálnou premennou funkcie, teda je príkaz var nadbytočný.
peta
Profil
Jo, na tohle ti FF do chybove konzoly napise upozorneni, ze predefinovavas pomoci var definovanou promennou e. Nevim, zda je vhodne si zahlcovat ladeni zbytecnou hlaskou navic.
_es
Profil
peta:
Jo, na tohle ti FF do chybove konzoly napise upozorneni, ze predefinovavas pomoci var definovanou promennou e.
Obávam sa, že si si to úplne vymyslel. Nič také chybová konzola nezaznamenáva.
peta
Profil
Časová značka: 27.6.2013 14:08:59
Varování: TypeError: variable e redeclares argument
Zdrojový soubor: file:///C:/x/js-click.htm
Řádek: 3, Sloupec: 8
Zdrojový kód:
    var e = e || window.event;  
-
<script>
function nazevFunkce(e) {
    var e = e || window.event; 
   }
</script>
<a onclick="funkce(event)" href="#">Rozbalit</a>
Str4wberry
Profil
V tomto případě se event předá do funkce ve všech prohlížečích stejně.

Nojo, je to tak. Díky.
_es
Profil
peta [#9]:
Jednak voláš funkciu funkce, no takú tam nemáš - je tam funkcia nazevFunkce. No aj po oprave názvu akosi v chybovej konzole nič také nevidím.
peta
Profil
Jo, chybicka. Kdyby sis teda precetl chybovou hlasku, co sem poslal, tam se o nedefinovane funkci nic nerika. Tato chyba naskoci hned pri nacteni stranky, totiz.
function funkce2(event) {
    event = event || window.event; 
   }
Tohle mi chybu nehlasi.
_es
Profil
peta:
Tato chyba naskoci hned pri nacteni stranky, totiz
V akej verzii Firefoxu? Lebo mne nijaká chyba „nenaskočí“. Respektíve by si na to mohol vyrobiť „živú“ ukážku.
peta
Profil
_es: "„živú“ ukážku" [#9] peta, FF 22, web developer doplnek, colorzila, linkchecker, html validator 0.9.5.1 (algoritmus soubezne, urovem pristupnosti 3)
_es
Profil
peta:
‚živú‘ ukážku" [#9] peta
To nie je „živá“ ukážka ( Povídání o živých ukázkách » Co živá ukázka není?). Ak píšeš „chybová konzola“, tak je tým snáď myslená „chybová konzola“ v menu prehliadača bez akýchkoľvek doplnkov a rozšírení, teda vymenovanie doplnkov nemá zmysel.
patlal
Profil
@peta: Varování není chyba, ale jen varování. Běh skriptu se nezastaví, tak proč z toho děláte takovou vědu?
peta
Profil
_es: http://jsfiddle.net/f2bZJ/
(jedine, co jsem v tom kodu z #9 zmenil, je oprava te chyby v nazvu funkce)
"Ak píšeš „chybová konzola“, tak je tým snáď myslená „chybová konzola“ v menu prehliadača" - no, dyt jo, je to v chybove konzoli. "bez akýchkoľvek doplnkov" - to ja nepoznam, jestli je ta hlaska z jakeho doplnku (jmeno doplnku tam neuvadi) a ani mne to nezajima. Doplnky jsem vyjmenoval prave proto, ze o muze byt z nektereho z nich.

patlal: Neni pravda. S _es resime zobrazeni chyby, protoze o to pozadal.
To je podobne, jak to furt nechapou lidi v kritice na stranku. Ja tam sepisi chyby, ktere se mi zdaji byt chybami. Jestli to za chyby povazuje nebo je opravi, je mi suma fuk. Upozornil jsem na to, co povazuji za chybu a co bych sam opravil. Tim to pro mne hasne.
_es
Profil
peta:
no, dyt jo, je to v chybove konzoli.
to ja nepoznam, jestli je ta hlaska z jakeho doplnku
Takže veta „na tohle ti FF do chybove konzoly napise upozorneni, ze predefinovavas pomoci var definovanou promennou e.“ je nepravdivá, lebo to do konzole „nenapíše“ samotný prehliadač, ale asi nejaký doplnok, ktorý si si do prehliadača nainštaloval.
Chamurappi
Profil
Reaguji na peta:
Upozornil jsem na to, co povazuji za chybu a co bych sam opravil.
Proč považuješ redeklaraci proměnné za chybu?

patlal: Neni pravda.
Co není pravda? Varování opravdu není chyba, běh skriptu se nepřeruší.
Sestavit jakýkoliv seznam hlášek je triviální, ale to ještě automaticky neznamená, že to nejsou blbosti. Za to, co sem napíšeš, neseš odpovědnost, nehledě na to, odkud to přebíráš. V důsledku je celkem jedno, jestli to hlásí sám prohlížeč, nebo nějaký doplněk — nám to hlásíš ty.
peta
Profil
Chamurappi: Precti si, co patlal psal. Dik. Neni pravda, ze z toho delam vedu. Naopak, slusne odpovidam es na dotaz.
Proc bys redeklaroval uz jednou deklarovanou promennou. To nedava smysl.
_es: Nechapu, oc ti jde. Napsal jsem, co mi to pise. Odpovedel ti, proc mi to pise, kde a mozna co. A ty mi ted zacinas vycitat, ze jsem si dovolil na ten problem vubec upozornit, ze sem ti dal zivou ukazku :)
_es
Profil
peta:
Napsal jsem, co mi to pise.
Písal si, že ti to „píše FF“, čo nie je pravda. Ak si do prehliadača nainštalujem nejaký doplnok, ktorý bude vypisovať do chybovej konzole trebárs každý výskyt čísla 13, tak to neznamená, že to tam „vypisuje prehliadač“.

Nechapu, oc ti jde.
O objasnenie situácie, ako tie „upozornenia“ v chybovej konzole vznikli - čo vyzerá byť objasnené. Lebo neviem o tom, že by také upozornenia niekedy vyrábal FF.

je to v chybove konzoli. "bez akýchkoľvek doplnkov" - to ja nepoznam, jestli je ta hlaska z jakeho doplnku (jmeno doplnku tam neuvadi) a ani mne to nezajima.
Takže teba nezaujíma, ako, prečo a odkiaľ sa tie hlášky do chybovej konzole dostali, len ich bez rozmyslu kopíruješ do diskusie - zaujímavý prístup.
Chamurappi
Profil
Reaguji na _es:
V about:config jde přepnout javascript.options.strict, pak může podobná varování chrlit i sám Firefox. Ale ne ve výchozím nastavení a neznám skoro nikoho, kdo by si to dobrovolně zapnul, protože to brzdí zpracování JS a testuje to i zcela neškodné věci, třeba použití přiřazení uvnitř výrazu v ifu, čtení z nedefinovaného člena objektu apod.


Reaguji na peta:
Precti si, co patlal psal. Dik.
Varování: TypeError: Na otázku začínající na „proč“ není platná odpověď „není pravda“.

Proc bys redeklaroval uz jednou deklarovanou promennou. To nedava smysl.
Čemu to reálně vadí? Proč by se to mělo opravovat?
peta
Profil
Chamurappi, _es: "Proč by se to mělo opravovat?" [#17]. Nemusis. Povazuji za dobre vedet a upozornit na to, ze to muze a nemusi byt chyba. Zalezi na kodu. Fakt nevim, proc z toho delate takovou vedu. Vubec nezalezi na tom z jakeho ladiciho nastroje to mam a o jak prisny typ chyby jde. Napriklad ted, kdyz si pustim jakekoliv stranky s jquery, tak ve vsech mi to zaplaca konzolu s podobnou chybou. Coz ukazuje na kvalitu programovani jquery.
_es
Profil
peta:
kdyz si pustim jakekoliv stranky s jquery, tak ve vsech mi to zaplaca konzolu s podobnou chybou. Coz ukazuje na kvalitu programovani jquery.
Ukazuje na to, ako je je kto schopný pracovať s prehliadačom. Ak tam tie upozornenia zobrazovať nechceš, prečo si si nastavil prehliadač tak, aby si ich tam mal? Prečo máš spustené ladiace nástroje brzdiace prehliadač, keď nechceš ladiť JS kód zobrazenej stránky?
peta
Profil
Ja je tam chci, je to chyba a je treba ji opravit.
Chamurappi
Profil
Reaguji na peta:
to muze a nemusi byt chyba. Zalezi na kodu.
Ne, nezáleží, duplicitní deklarace není nikdy chyba. Může být nadbytečná, ale nesmí způsobit selhání.

Ja je tam chci, je to chyba a je treba ji opravit.
Není to chyba, je to varování. Tím, že sis striktní varování zapnul, si brzdíš interpretaci JS. Kdyby tvůrci jQuery upravili svoji knihovnu tak, aby jsi žádné hlášky nedostával, zbrzdili by běh u všech uživatelů. To by ti připadalo správné?
peta
Profil
Promennou "e" definovanou mas v nazevFunkce(e), pouze muze mit undefined hodnotu. Nechapu, co by brzdilo.
Chamurappi
Profil
Reaguji na peta:
Mluvil jsi o chybách v jQuery, ne o redeklaraci. Kdyby v jQuery ošetřili všechno, co ti hlásí tvá konzole, byl by kód té knihovny méně efektivní a méně stručný a žádná reálná pozitiva by to nemělo.
Tohle nemá cenu. Opět se ukazuje, že je lepší tě mazat…

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: