Autor Zpráva
leorond
Profil
Ahoj, mám takový jeden dotaz který se týká Opakovaného odpočtu času a hlášky

Mám takovíto script

var vterina = 1000;
var minuta = vterina * 60;
var hodina = minuta * 60;
var den = hodina * 24;
var rok = den * 365.24219;

var slova = {
    roku: ["rok", "roky", "let"],
    dnu: ["den", "dny", "dnů"],
    hodin: ["hodina", "hodiny", "hodin"],
    minut: ["minuta", "minuty", "minut"],
    vterin: ["vteřina", "vteřiny", "vteřin"]
};

function sklonovani(pocet, co) {
    if (pocet == 1) return slova[co][0];
    if (pocet < 5 && pocet > 0) return slova[co][1];
    return slova[co][2];
}

function odpocet(el) {
    var konec = new Date(el.getAttribute("data-konec"));
    var ted = new Date();
    var rozdil = konec - ted;
    if (rozdil < vterina) {
        el.innerHTML = el.getAttribute("data-hlaska");
        return;
    }
    var zbyva = {
        roku: Math.floor(rozdil / rok),
        dnu: Math.floor(rozdil % rok / den),
        hodin: Math.floor((rozdil % den) / hodina),
        minut: Math.floor((rozdil % hodina) / minuta),
        vterin: Math.floor((rozdil % minuta) / vterina)
    }

    var vypis = el.getAttribute("data-zbyva");
    for (co in zbyva) {
        var pocet = zbyva[co];
        if (pocet > 0) vypis += " " + pocet + " " + sklonovani(pocet, co);

    }

    el.innerHTML = vypis;
    setTimeout(function() {
      odpocet(el); 
    }, vterina);
}

<p id="odpocet" data-konec="02/23/2016 14:46:30" data-hlaska="Čas vypršel!" data-zbyva="Do odpočtu zbývá:"></p>
<script>
  odpocet(document.getElementById('odpocet'));
</script>

Je to script který mi odpočítá čas a napíše hlášku "Čas vypršel".

Já bych ho potřeboval upravit tak aby se za odpočítávaným časem pokud bude zbývat 5 minut ukázal text a zároveň aby po dokončení odpočtu se celý cyklus sám obnovil.

Vím že je potřeba udělat jen několik podmínek ale jsem v tom začátečník a potřeboval bych v tom poradit.

děkuji
leorond
Profil
Tak jsem si o tom něco přečetl a zkusil jsem to sám. Vznikl mi script který funguje dobře ale někde tam mám asi chybu a nemohu jí najít.

Po uplynutí 55 minut v XX:25 se vypíše místo času OPEN a po uplynutí zbývajících 5 minut se resetuje čas.

Ovšem po resetování času se neukáže čas který se ukázat má, má se ukázat odpočet 54 minut a 59 sekund ale zobrazí se 90 minut a po obnovení stránky se to srovná na správný čas.

Můj nový script

            <span><? echo    bc_start;?>: </span>
            <span id=bctime>
                <script type="text/javascript">
                    var    acum    =    new Date();                    
                            
                    var    minutes    =    acum.getMinutes();                    
                    var    seconds    =    acum.getSeconds();                    
                    
                    bcstart            =    minutes * 60 + seconds;            
                    
                    if    (minutes    >    30)    doin    =    3600 - bcstart;    
                    else    doin    =    -bcstart;                        
                    bc    =    doin + 25*60;                                
                    
                    function    bceventtime()
                    {
                        bc    =    bc - 1;                                    
                        if    (bc    <    -5*60)                                
                        {
                            bc    =    3600 + 30*60;                        
                            bc    =    bc-1;                                
                        }
                        min    =    Math.floor(bc/60);                        
                        sec    =    bc%60;                                    
                        if    (min    <    0)                                
                        {
                            document.getElementById("bctime").innerHTML    =    "<?    echo    open;    ?>";
                        }
                        else                                            
                        {
                            if    (min    <    10)    min    =    "0"+min;
                            if    (sec    <    10)    sec    =    "0"+sec;
                            document.getElementById("bctime").innerHTML    =    min+":"+sec;
                        }
                        window.setTimeout("bceventtime()",1000);        
                    }
                    bceventtime();
                </script>
            </span>

Mohl by mi někdo pomoci toto napravit? Poradit kde dělám chybu?

Děkuji

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: