Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
discount 30 + hiring
Avatar
niveses
Tvůrce
Avatar
niveses:29.12.2013 17:57

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
29.12.2013 17:57
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na niveses
Honza Bittner:29.12.2013 18:12

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
Absolvent FIT ČVUT :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
niveses
Tvůrce
Avatar
Odpovídá na Honza Bittner
niveses:29.12.2013 18:18

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
Odpovídá na niveses
Drahomír Hanák:29.12.2013 18:21

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
29.12.2013 18:21
Avatar
Odpovídá na niveses
Michal Žůrek - misaz:29.12.2013 18:29

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

 
Nahoru Odpovědět
29.12.2013 18:29
Avatar
niveses
Tvůrce
Avatar
Odpovídá na Drahomír Hanák
niveses:29.12.2013 18:40

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
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
niveses:29.12.2013 18:42

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:29.12.2013 19:46

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
Avatar
niveses
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
niveses:5.1.2014 18:20

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.