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
Pro ukázků a zjednodušení jsem udělal video tohoto problému:
http://www.youtube.com/watch?v=f0Mk5-z7U4Q
_es
Profil
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.
Chamurappi
Profil
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);
… ta čárka tam být nemá.
Honza.P@
Profil
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
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
Honza.P@:
Chamurappi asi myslel niečo takéto:
funkcia(){nejaký kód}
funkcia();
setInterval(funkcia, 1000);
Honza.P@
Profil
_es:
Díky.

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: