« 1 2 »
Autor Zpráva
Damave
Profil
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 *
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 day1day19 (podle toho kolikátého je) a mimo to rozmezí jim to místo toho přidá třídu end.
maks
Profil
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
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
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
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
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
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>
takto by to mohlo byť? od toho 26.11.2013 do 16.12.2013 lebo to nefunguje kde je chyba?
Chamurappi
Profil
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
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
Reaguji na Damaveho:
Ne. Vážně si z tebe neděláme srandu, když říkáme, že měsíce jsou číslované 011.
Damave
Profil
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
Damave:
Nechápem :(
Čo nechápeš? Že má byť druhý argument funkcie Date celé číslo v rozsahu od 0 do 11?
Damave
Profil
vážne nechápem som zčiatočník nenapísal by si mi to prosím :( _es
Joker
Profil
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>
ale aj tak to nejde nemám tam niečo vložiť aby každý deň bolo že day1,day2,day3 lebo css mám podľa day tu je css: http://damave.sk/themes/modra/img/css.css
Damave
Profil
a lebo niako inak sa to nedá?
maks
Profil
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
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 sekund na den, což je 86400 oprava: milisekund za den, což je 86400000, vyjde počet dní jako desetinné číslo, po zaokrouhlení nahoru kolikátý den právě běží.
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. 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, takže za 86400 bude potřeba napsat ještě tři nuly.

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
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
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
Damave:
Je to ok?
maks
Profil
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
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í.
« 1 2 »

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: