Avatar
niveses
Redaktor
Avatar
niveses:

Ahoj,
dělám jednoduchý javascriptový časovač.
Pokud uživatel nezadá hodnoty, začne odpočítávat 5 min.

Mám ovšem problém se zadáváním hodnot.
Chrome konzole mi píše toto: Uncaught TypeError: Object has no method 'apply', z čehož jsem nijak nezmoudřel.

Toto je ono: http://jsfiddle.net/Vvtp7/1/

Děkuji za pomoc a přeji hezký zbytek volna.

 
Odpovědět  -1 29.12.2013 17:57
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na niveses
Honza Bittner:

Prostě uděláš kód tak aby každou sekundu odečítal hodnotu z SEKUNDY, pokud bude nula, SEKUNDY nastavíš na 60 a MINUTY o 1 méně, obdobně tak i hodiny.

Změna času tedy nebude problém, jen změníš hodnotu SEKUND, MINUT, HODIN v tom tvém kruhu....

Časovač tedy musí pracovat s hodnotami v kruhu.

Nahoru Odpovědět 29.12.2013 18:12
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
niveses
Redaktor
Avatar
Odpovídá na Honza Bittner
niveses:

Od toho je funkce setInterval. Není spíš problém v získání, kolik zbývá času?

Protože když přímo napíšu kolik se má odpočítavat, tak to funguje.

Děkuji

 
Nahoru Odpovědět 29.12.2013 18:18
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na niveses
Drahomír Hanák:

Místo toho, abys předal funkci count, ji rovnou zavoláš a zaregistruješ jako událost číslo, které to vrátí. Funkce v JS můžeš předat normálně jako argument.

var handler = function() {};
$('selektor').click(handler);
 
Nahoru Odpovědět  +1 29.12.2013 18:21
Avatar
Odpovídá na niveses
Michal Žůrek (misaz):

nestačí pro to obyčejný setTimeout a clearTimeout?

Nahoru Odpovědět 29.12.2013 18:29
Nesnáším {}, proto se jim vyhýbám.
Avatar
niveses
Redaktor
Avatar
Odpovídá na Drahomír Hanák
niveses:

http://jsfiddle.net/Vvtp7/3/
Nějak takhle? Teď ale nezačne počítat samo a navíc tam vzniknou naprosto zvláštní hodnoty pro odpočet.

 
Nahoru Odpovědět 29.12.2013 18:40
Avatar
niveses
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
niveses:

Ukážeš prosím příklad?

Nějak mi není jasný, jak bych ho měl v této příležitosti použít.

BTW: Opravdu nechápu, proč mi někdo dal mínus. Jsme snad v diskusi o JS a já se normálně zeptal..

 
Nahoru Odpovědět 29.12.2013 18:42
Avatar
Odpovídá na niveses
Michal Žůrek (misaz):

Jednoduchá stránka v HTML s inputem:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
        <input type="text" id="vstupniPole"/>
        <script src="timer.js"></script>
</body>
</html>

timer.js pak bude vypadat následovně:

console.log("Odpočet zahájen")
var interval = setTimeout(function () {
        alert("Konec!!! ");
        console.log("Odpočet skončil")
}, 5000)
input = document.getElementById("vstupniPole");
input.oninput = function myfunction() {
        if (input.value != "") {
                clearTimeout(interval);
                console.log("Odpočet zrušen")
        }
}

Pokud to potřebuješ vypisovat do HTML, tak si nastavíš interval na 1s ve kterém budeš pokaždé vypisovat zbývající čas, tak že si deklaruješ proměnou (třeba ticks) a tu budeš v každém kroku inkrementovat a následně vypisovat.

Nahoru Odpovědět 29.12.2013 19:46
Nesnáším {}, proto se jim vyhýbám.
Avatar
niveses
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
niveses:

I když opožděně, děkuji za odpověď.

 
Nahoru Odpovědět 5.1.2014 18:20
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.