Využij akce až 30% zdarma při nákupu e-learningu. Zároveň pouze tento týden sleva až 80 % na e-learning týkající se Javy
Hledáme fulltime koordinátora/ku kurzů. 100% homeoffice,100% časově flexibilní. Mám zájem!
Java week
Avatar
niveses
Redaktor
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
Redaktor
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
Student FIT ČVUT. In love with Flutter. :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://g...
Avatar
niveses
Redaktor
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
Drahomír Hanák
Redaktor
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
niveses
Redaktor
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
Redaktor
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
Redaktor
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.