Autor | Zpráva | ||
---|---|---|---|
Honza.P@ Profil |
Včera jsem tu s Vámi řešil odpočet pomocí js.
Už ho mám hotov, ale problém je v tom, že po cca minutě se začne rozbíhat. To znamená, že každá řádka se aktualizuje v jinou dobu (cca 0,5s). Řeknete si, že to je málo, ale vypadá to hrozně. Chvíli trvá, než se to projeví. Příklad je tady (včetně zdrojáků). Nechal jsem se inspirovat jedním napsaným scriptem. Možná by to šlo líp a jinak, ale netušim jak. Úplně nejlepší by bylo, kdyby se to zprovoznění dalo napsat ve tvaru: // Čas pro výpočet, atribut, na který se má ten čas aktualizovat $(element).countdown({element.attr("data-time"), element}); Tzv bez callbacu a samo mi to vrátilo ten čas (element.html(h+m+s)) |
||
Honza.P@ Profil |
#2 · Zasláno: 21. 2. 2012, 23:26:20
Pro ukázků a zjednodušení jsem udělal video tohoto problému:
http://www.youtube.com/watch?v=f0Mk5-z7U4Q |
||
_es Profil |
#3 · Zasláno: 21. 2. 2012, 23:46:35
Honza.P@:
> každá řádka se aktualizuje v jinou dobu (cca 0,5s). > Řeknete si, že to je málo, ale vypadá to hrozně. Možno by stálo za to zapojiť do toho viac svoj vlastný rozum a spraviť to tak, aby sa každú sekundu spúšťala len jedna funkcia meniaca stav všetkých odpočtov a nespoliehať sa na rôzne pochybné „jQuery pluginy“. |
||
Honza.P@ Profil |
_es:
Měl si pravdu. Sedl jsem k tomu. Vytvořil přesně to co chci a funguje to jak chci. :) A ke všemu to bylo hotové rychlejc, než nalezení něčeho hotového. Poučení pro příště. Jen jsem se ještě chtěl zeptat, zda nemá někdo nápad na řešení berličky, kterou mám v kodu (script.js). http://try.hys.cz/ http://try.hys.cz/2/ Jde o to, že díky setInterval("", 1000) se to spustí až vteřinu po načtení stránky a ne ihned, jak bych potřeboval. Toto řeší ta berlička, ale díky ní mám duplicitní kod. |
||
Časová prodleva: 4 dny
|
|||
Chamurappi Profil |
#5 · Zasláno: 26. 2. 2012, 23:41:53
Reaguji na Honzu.P@:
Kdyby ses naučil JavaScript normálně (tedy bez frameworku), tak bys uměl používat funkce i proměnné tak, abys nemusel kód duplikovat. Ta zázračná vědomost, která ti patrně chybí, je, že funkce mohou mít jméno a že s nimi jde pracovat jako s proměnnými. Mimochodem, v countdown.js máš syntaktickou chybu:
var options = $.extend({ timestamp : 0, }, prop); |
||
Časová prodleva: 3 dny
|
|||
Honza.P@ Profil |
#6 · Zasláno: 29. 2. 2012, 11:55:57
Chamurappi: Představi si, že vim, ale zápis:
$(document).ready(function(){ function countdow() { $('td.countdown').each(function() { var element = $(this); $(element).countdown({timestamp : element.attr("data-time")}); }); }; // Every 1 second refresh setInterval(function() { countdown() }, 1000); }); Vůbec neřeší můj problém. Funguje to úpůlně stejně jako ten příklad bez berličky. |
||
Chamurappi Profil |
#7 · Zasláno: 29. 2. 2012, 12:29:03
Reaguji na Honza.P@:
„Představi si, že vim“ Fajn. Pokud tu funkci chceš zavolat hned, tak ji zavolej hned. Za závorku na sedmém řádku nepatří středník (i když je neškodný). |
||
_es Profil |
#8 · Zasláno: 29. 2. 2012, 12:29:32
Honza.P@:
Chamurappi asi myslel niečo takéto: funkcia(){nejaký kód} funkcia(); setInterval(funkcia, 1000); |
||
Honza.P@ Profil |
#9 · Zasláno: 29. 2. 2012, 13:06:38
_es:
Díky. |
||
Časová prodleva: 11 let
|
0