Autor | Zpráva | ||
---|---|---|---|
Damave Profil |
#1 · Zasláno: 25. 11. 2013, 21:25:29
Dobrý deň,
chcem sa spýtať čo znamená tento skript. Som začiatočník zatiaľ sa v tom tak moc nevyznám. Za odpovede vopred ďakujem <script> var d = new Date(); var day = d.getDate(); var month = d.getMonth(); var dayclass = "end"; //month = 11; //day = 20; //if(month == 12) {dayclass = (day < 20) ? "day"+day : "end"} $(".page-wrap").addClass(dayclass); $(function() { $("button[rel]").overlay({mask: '#000', effect: 'apple'}); if($(window).height() > 950) {$(".page-wrap").height($(window).height()-146)}; }); </script> |
||
anonymní Profil * |
#2 · Zasláno: 26. 11. 2013, 07:46:16 · Upravil/a: anonymní
Damave:
2-5: získání aktuálního data (p kouskách, ne v celku) 8-9: přiřazení třídy day[cislodne] nebo end k .page-wrap
13: metoda/plugin overlay (překrytí obshu, černiou barvou s nějakým efektem) 14: nastavení výšky body. K tomu všemu přidaná jQuery knihovna a něco dalšího, .overlay není součástí jQuery.
Celé by to šlo napsat zhruba na stejný počet řádků i v čistém JS, jQuery na toto rozohdně není třeba. ještě bych doplnil: pokud jej chceš použít, vyhni se mu obloukem :-) |
||
Radek9 Profil |
anonymní:
„pokud jej chceš použít, vyhni se mu obloukem“ Důvod? Celkem mě irituje tahle móda, že jQuery je největší zlo a nemělo by se používat. (Asi odpověď na předchozí módu vyvyšující jQuery.) Hodně lidí si to totiž plete, považují jQuery za něco jiného než JS a JS zase chápou pouze jako DOM. Proto vidí tyhle dvě věci jako alternativy. Ruku na srdce, DOM je jedno z nejodpornějších existujících API a jQuery to obaluje do celkem snesitelného kódu. Ta knihovna je však těžkotonážní, to je problém. Kódy se musí psát velice obezřetně, aby aplikace nebyla pomalá. V, jak ty říkáš, čistém JS nic takového vlastně neuděláš. Potřebuješ API na přístup k elementům. Samozřejmě, někdy je zbytečné do stránky tahat knihovnu a je jednodušší prostě použít DOM. Není však správné knihovny odmítat úplně. Pro DOM existuje nespočet jiných (a mnohdy i velice rychlých a jednoduchých) knihoven. Např. Zepto.js. |
||
Joker Profil |
anonymní:
Hlavně by pro začátečníka chtělo poznamenat, že řádky 6-8 jsou zakomentované, takže efekt první části skriptu tak jak je uvedená je, že všem prvkům s třídou page-wrap přiřadí ještě třídu end . Plus nastaví hodnoty proměnným d , day , month a dayclass , pokud se používají ještě někde jinde.
Doplnění: Pravda, odkomentování řádků 6-8 by moc nezměnilo, protože jsou chybně. Kdyby tam řádky 6 a 7 nebyly a na řádku 8 bylo month == 11 místo month == 12 (protože getMonth vrací 0-11), dělalo by to to, že od 1. do 19. prosince to prvkům s třídou page-wrap přidá třídu day1 až day19 (podle toho kolikátého je) a mimo to rozmezí jim to místo toho přidá třídu end .
|
||
maks Profil |
#5 · Zasláno: 26. 11. 2013, 10:33:21
Radek9:
pro vyskočení popupu, nastavení výšky a přiřazení třídy nějakému elementu nepotřebuji jQuery. Ty snad ano? Nevím, co přesně v tomto případě dělá efekt jablka, ale jen kvůli němu tahat do kódu 100+kB mi přijde opravdu směšné. Móda nemóda. Raději bych udělal podobný (ne-li stejný) efekt jinak. |
||
Radek9 Profil |
#6 · Zasláno: 26. 11. 2013, 10:40:12
maks:
„pro vyskočení popupu, nastavení výšky a přiřazení třídy nějakému elementu nepotřebuji jQuery.“ Nepotřebuji. Stejně tak nepotřebuji dobré jídlo, vystačím si se suchým chlebem. :-) Nechci jQuery vyvyšovat. Ale nechci ho ani potápět. Osobně bych pro vytvoření modální okna nepoužíval čistý DOM. Použil bych knihovnu. Ne nutně jQuery, ale nějakou určitě. |
||
Chamurappi Profil |
#7 · Zasláno: 26. 11. 2013, 10:45:11
Reaguji na Damaveho:
„ //if(month == 12) “
Tato možnost by stejně nikdy nenastala, ani kdyby byla odkomentovaná, protože d.getMonth() vrací čísla od 0 do 11 .
Reaguji na Radka9: „Hodně lidí si to totiž plete, považují jQuery za něco jiného než JS a JS zase chápou pouze jako DOM.“ A většina těchto lidí jsou fanoušci jQuery, nikoliv odpůrci. „Ruku na srdce, DOM je jedno z nejodpornějších existujících API a jQuery to obaluje do celkem snesitelného kódu.“ DOM by zasloužil pár záplat, ale odporný rozhodně není. Možná trochu upovídaný, ale to není zásadní problém. Kódy jako ten v tomto příspěvku mi snesitelné nepřipadají. „Potřebuješ API na přístup k elementům.“ Vážně? Hledání elementů se strašně moc přeceňuje. „Pro DOM existuje nespočet jiných (a mnohdy i velice rychlých a jednoduchých) knihoven. Např. Zepto.js.“ Zepto.js vůbec nefunguje v u nás nejrozšířenějším prohlížeči. Takže můžeme chrochtat blahem nad tím, jak je to úžasně krásné a naprosto odtržené od reality. Když mluvíš o těch mýtech, mezi příznivci jQuery existuje přesvědčení, že rychlost vykonávání akcí se dá zajistit dodatečným odepsáním skupiny prohlížečů, což je pitomost. Odepsáním prohlížečů můžeš zmenšit datovou velikost knihovny. V čem spočívá ta zázračná rychlost Zepta, která je s jQuery při neobezřetném psaní nedosažitelná? |
||
Joker Profil |
#8 · Zasláno: 26. 11. 2013, 11:13:41
Myslím, že Damave se ptá na nějaký konkrétní skript, o jQuery tam není ani slovo a debata jestli jQuery je super nebo ne je mimo téma.
Jen jedna trochu odlehčená poznámka: Radek9: „Stejně tak nepotřebuji dobré jídlo, vystačím si se suchým chlebem.“ No, můžu jíst osolený suchý chleba stříbrným příborem ze zlatého talíře u 10 metrů dlouhého stolu, říkat tomu jOběd a hádat se s odpůrci tvrdícími, že to v základu pořád není nic jiného než chleba :-) Ale jinak souhlasím, že psát někomu kdo se jen zeptá na nějaký kód (a o jQuery nepadne ani slovo) „nepoužívej jQuery“ je špatně. |
||
_es Profil |
Joker:
„psát někomu kdo se jen zeptá na nějaký kód (a o jQuery nepadne ani slovo) ‚nepoužívej jQuery‘ je špatně.“ A ešte ten kód môže teoreticky „znamenať“ všeličo. $ môže byť premenná, obsahujúca odkaz na ľubovoľnú funkciu, nemusí to súvisieť s jQuery. Čo „znamenajú“ prvé štyri riadky sa asi dá tipnúť - ak nebolo v nejakom skoršom kóde predefinované/zmazané Date . Asi by bolo vhodnejšie žiadať upresnenie dotazu - kde konkrétne sa kód nachádza a pod., než následná debata - možno je najdôležitejšie to, čo robí nejaká, asi k jQuery doplnená, metóda overlay .
|
||
Damave Profil |
#10 · Zasláno: 26. 11. 2013, 14:12:36
Aha ďakujem vám za rady a ako by som to mal zmeniť aby to bolo od 28.11. do 18.11.2013 ?????????????? dakujem
|
||
maks Profil |
Damave:
oprav si klávesnici, ať se ti nezasekává. A pak si nastaduj, jak se pracuje s datem, které používáš na prvním řádku. Třeba na jpw.cz. A to nejlepší nakonec. V tebou zvoleném intervalu žádné datum není, takže nepotřebuješ ani nic programovat :-) |
||
Damave Profil |
#12 · Zasláno: 26. 11. 2013, 14:24:30
A nemohol by si mi to tam doplniť ja sa v tom nevyznám ;( doplniť dátum od 28.11 do 18.12.2013 dík
|
||
Damave Profil |
maks, Joker, Chamurappi, Radek9, anonymní:
_es: <script> var d = new Date(); var day = d.getDate(); var month = d.getMonth(); var dayclass = "end"; //if(month == 11 && day>=26) {dayclass = (month==12 && day<=16) ? "day"+day : "end"} $(".page-wrap").addClass(dayclass); $(function() { $("button[rel]").overlay({mask: '#000', effect: 'apple'}); if($(window).height() > 950) {$(".page-wrap").height($(window).height()-146)}; }); </script> |
||
Chamurappi Profil |
#14 · Zasláno: 26. 11. 2013, 20:59:22
Reaguji na Damaveho:
Já i Joker jsme ti psali, jakých hodnot může nabývat month .
Joker ti i naznačil, že zakomentovaný řádek (s dvěma lomítky na začátku) nic nedělá. Syntaxi JS najdeš částečně popsanou na JPW. Reaguji na Jokera: „debata jestli jQuery je super nebo ne je mimo téma“ Máme prostředky na to, abychom mimotématické debaty oddělili. Jestli Radek9 chce reagovat, nebránil bych mu. |
||
Damave Profil |
#15 · Zasláno: 27. 11. 2013, 13:11:18
Chamurappi:
aha :D a takto to môže byť? len my nesedí day1.day2,day3,......day20 <script type="text/javascript"> var start_timestamp = new Date(2013, 11, 26).getTime(); var end_timestamp = new Date(2013, 12, 16).getTime(); var current_timestamp = new Date().getTime(); if (current_timestamp > start_time && current_timestamp < end_timestamp) { var dayclass = "end"; $(".page-wrap").addClass(dayclass); $(function() { $("button[rel]").overlay({mask: '#000', effect: 'apple'}); if($(window).height() > 950) {$(".page-wrap").height($(window).height()-146)}; }); } </script> |
||
Chamurappi Profil |
#16 · Zasláno: 27. 11. 2013, 13:32:24
Reaguji na Damaveho:
Ne. Vážně si z tebe neděláme srandu, když říkáme, že měsíce jsou číslované 0 až 11 .
|
||
Damave Profil |
#17 · Zasláno: 27. 11. 2013, 14:08:11
Chamurappi:
Nechápem :( tak takto kto my môže pretvoriť základný skript tak aby sedel s css základný skript: <script> var d = new Date(); var day = d.getDate(); var month = d.getMonth(); var dayclass = "end"; //month = 11; //day = 20; //if(month == 12) {dayclass = (day < 20) ? "day"+day : "end"} $(".page-wrap").addClass(dayclass); $(function() { $("button[rel]").overlay({mask: '#000', effect: 'apple'}); if($(window).height() > 950) {$(".page-wrap").height($(window).height()-146)}; }); </script> dakujem veľmi pekne za vašu trpezlivosť vopred dakujem |
||
_es Profil |
#18 · Zasláno: 27. 11. 2013, 14:17:39
Damave:
„Nechápem :(“ Čo nechápeš? Že má byť druhý argument funkcie Date celé číslo v rozsahu od 0 do 11?
|
||
Damave Profil |
#19 · Zasláno: 27. 11. 2013, 14:21:04
vážne nechápem som zčiatočník nenapísal by si mi to prosím :( _es
|
||
Joker Profil |
#20 · Zasláno: 27. 11. 2013, 15:05:20
Damave:
Bohužel, já už opravdu nevím, jak jednodušeji to napsat, než „Objekt Date v JavaScriptu čísluje měsíce 0-11“ (0 = leden, 1 = únor, …, 11 = prosinec). Ale je pravda, že chybu to nevyhodí. Totiž JS Date umí automaticky přepočítat menší jednotky na vyšší, takže jde zadat třeba 32. listopadu, 0. listopadu resp. -1. listopadu a neskončí to chybou, stane se z toho 2. prosince, 31. října, resp. 30. října. To znamená: var start_timestamp = new Date(2013, 11, 26).getTime(); // = 26. prosince 2013 var end_timestamp = new Date(2013, 12, 16).getTime(); // = 16. ledna 2014 |
||
Damave Profil |
Joker, _es, Chamurappi:
už chápem už som to dal takto: <script type="text/javascript"> var start_timestamp = new Date(2013, 10, 26).getTime(); var end_timestamp = new Date(2013, 11, 15).getTime(); var current_timestamp = new Date().getTime(); if (current_timestamp > start_time && current_timestamp < end_timestamp) { var dayclass = "end"; $(".page-wrap").addClass(dayclass); $(function() { $("button[rel]").overlay({mask: '#000', effect: 'apple'}); if($(window).height() > 950) {$(".page-wrap").height($(window).height()-146)}; }); } </script> |
||
Damave Profil |
#22 · Zasláno: 27. 11. 2013, 17:00:03
a lebo niako inak sa to nedá?
|
||
maks Profil |
#23 · Zasláno: 27. 11. 2013, 17:05:09
Damave:
jak jinak? Návod na řešení jsi dostal. Není to nic těžkého, co by ani začátečník nemohl nepochopit. „ale aj tak to nejde nemám tam niečo vložiť aby každý deň bolo že day1,day2,day3“ něco bys tam vložit měl, ty třídy se samy od sebe k elementu nepřiřadí. Proč jsi pracoval s jedním JS kódem (ke kterému jsi dostal kupu rad) a nyní se snažíš o totéž jiným? Vrať se k tomu původnímu a odstraň ten komentář. |
||
Damave Profil |
#24 · Zasláno: 27. 11. 2013, 17:17:23 · Upravil/a: Moderátor (editace znemožněna) 27. 11. 2013, 18:27:41
maks:
:( prosím pošleš mi to ako to má byť? prosím neviem čo myslíš tak aby tam boli aj day admin viem že toto prečítaš lebo to je spam ale nevieš mi stím pomôcť? Moderátor Joker: Jednak diskuse další příspěvky stejného autora automaticky slučuje s předchozími a jednak zasílání nekonstruktivních „nakopávacích“ určitě není cesta k vyřešení problému.
|
||
Joker Profil |
Damave:
Jinak myslím že to getTime na konci je zbytečné, objekt Date lze taky porovnávat. „ako to má byť?“ Mimochodem, původní dotaz byl co znamená ten skript, teď „jak to má být správně“. Jenže celou dobu víceméně jen odhadujeme, jak vlastně zní konkrétní zadání. Zatím vymýšlíme kód, který dělá něco, co ten ukázkový příklad sice nedělá, ale podle našeho odhadu to snad byl původní záměr jeho autora. „nemám tam niečo vložiť aby každý deň bolo že day1,day2,day3“ Určitě. V kódu v [#21] není nic, co by to zařídilo. V proměnné dayclass je vždycky "end".
Ale to není moc těžké, stačí od sebe udělat rozdíl current_timestamp a start_time. Vyjde, jak daleko je current_timestamp od start_time, když to budete dělat s tím getTime() na konci, tak v sekundách, když tak jak jsem to napsal já, tak v milisekundách. Pak to stačí vydělit počtem Tzn.: var dayNum = Math.ceil((current_timestamp - start_timestamp) / 86400000); dayClass = "day" + dayNum; // day1 atd. Jinak teoreticky je myslím zbytečné na konci každého new Date dělat getTime(), všechny použité operace jde dělat i přímo s objektem Date. edit: ↓ Chamurappi má pravdu, takže škrtám část o milisekundách a doplňuji ještě tři nuly do kódu, aby to bylo správně. |
||
Chamurappi Profil |
#26 · Zasláno: 27. 11. 2013, 18:29:24
Reaguji na Jokera:
„Akorát pak bude zavádějící to pojmenování proměnných ‚timestamp‘ a časy budou v milisekundách místo sekundách“ Metoda getTime a automatická konverze času na číslo (která se děje při odčítání i při porovnání větší/menší) vracejí totéž. Takže ano, je asi zbytečné psát všude .getTime() , ale pohybujeme se tak jako tak v milisekundách.
|
||
Damave Profil |
#27 · Zasláno: 27. 11. 2013, 18:32:44 · Upravil/a: Damave
Joker:
Dík a ten var mám dať po riadok 4? takto? <script type="text/javascript"> var start_timestamp = new Date(2013, 10, 26).getTime(); var end_timestamp = new Date(2013, 11, 15).getTime(); var current_timestamp = new Date().getTime(); var dayNum = Math.ceil((current_timestamp - start_timestamp) / 86400000); dayClass = "day" + dayNum; // day1 atd. if (current_timestamp > start_time && current_timestamp < end_timestamp) { var dayclass = "end"; $(".page-wrap").addClass(dayclass); $(function() { $("button[rel]").overlay({mask: '#000', effect: 'apple'}); if($(window).height() > 950) {$(".page-wrap").height($(window).height()-146)}; }); } </script> |
||
Damave Profil |
#28 · Zasláno: 27. 11. 2013, 20:40:39
Damave:
Je to ok? |
||
maks Profil |
#29 · Zasláno: 28. 11. 2013, 09:03:39
Damave:
funguje to? Pokud ano, tak je to ok, pokud ne, tak to není ok. Nevím, to jsi tak nepoužitelný i v běžném životě? Nic si nepřečíst, nezkusit a jen se ptát furt dokola, dokud to někdo nenapíše? Na [#24] bych nereagoval už jen z principu. Pokud nemáš ani na to dát kód dohromady z rad, které jsi dostal, tak by sis měl najít jiného koníčka. Nebo požádat nějakého kamaráda, který by ti s tímto kódem (třeba i na základě zdejších rad) pomohl. |
||
Kajman Profil |
#30 · Zasláno: 28. 11. 2013, 11:26:15
Joker:
Přijde mi, že kolem půlnoci ten výpočet může zlobit, pokud startovní čas není ve stejném časovém pásmu (díky letnímu času) jako čas zobrazení. |
||
Téma pokračuje na další straně.
|
0