Metody setTimeout(), clearTimeout(), setInterval() a clearInterval() se pou╛φvajφ na Φasovßnφ udßlostφ.
Jsou to metody objektu window.
Proto╛e setInterval() a clearInterval() jsou dostupnΘ a╛ od Φtvrt²ch verzφ prohlφ╛eΦ∙, v praxi se nedoporuΦujφ a nahrazujφ se rekurzφ timeout∙.
Syntaxe:
prom∞nnß = setTimeout("akce", milisekundy); // naΦasuje
akci
clearTimeout(prom∞nnß); // zru╣φ naΦasovßnφ
prom∞nnß2 = setInteval("akce", milisekundy); // naΦasuje opakovanou
akci
clearInterval(prom∞nnß); // zru╣φ opakovanΘ naΦasovßnφ
Akce je libovoln² p°φkaz JavaScriptu. Musφ b²t v uvozovkßch, jinak se provede hned. Ru╣enφ naΦasovßnφ se moc nepou╛φvß, ale n∞kdy je pot°eba.
setTimeout("window.close()", 12000);
Po dvanßcti sekundßch (tj. 12000 milisekund) se zav°e aktivnφ okno (window.close() ).
V praxi se Φast∞ji do Φasovßnφ zapisuje odkaz na funkci ne╛ vlastnφ k≤d. A sekundy se lΘpe zadßvajφ jako souΦin. Nap°φklad po p∞ti minutßch spustφme funkci akce():
setTimeout("akce()", 5 * 60 * 1000);
Aby ╣la naΦasovanß udßlost zru╣it, musφ se spou╣t∞t ulo╛enß do prom∞nnΘ, nap°. casovac. P°φklad ΦasovanΘ deaktivace okna ulo╛enΘ do prom∞nnΘ:
casovac = setTimeout(window.blur(), 12000);
Ru╣enφ naΦasovßnφ pak obvykle zaji╣╗uje n∞jakß udßlost. Nap°. kliknutφ na tlaΦφtko. Ru╣φcφ metoda clearInterval(p°ebφrß jako parametr tu prom∞nnou casovac).
<input type="button" value="Zru╣it Φasovßnφ"
onclick="clearTimeout(casovac)">
P°φklad Φasovßnφ a zru╣enφ Φasovßnφ.
Pozor, v nßvodech se Φasto prom∞nnß "casovac" zapisuje jako "id", tedy clearTimeout(id). To ale vede k chybßm, pokud je pozastavenφ intervalu vßzßno na udßlost n∞jakΘho prvku (t°eba input), proto╛e id je asi n∞jakΘ klφΦovΘ slovo pro prvky.
Metoda setInterval("akce", Φas) opakuje akci poka╛dΘ, kdy╛ uplyne Φas. Vyu╛φvß se to zejmΘna p°i animacφch, ale i jinde. Nap°φklad chci, aby se okno aktivovalo do pop°edφ (focus() ) ka╛d²ch p∞t minut:
window.setInterval("window.focus()", 5 * 60 * 1000);
Kdy╛ u╛ivatel pracuje s vφce okny nebo aplikacemi, bude se mu toto okno ka╛d²ch p∞t minut p°ipomφnat. P°φklad na opakovanΘ Φasovßnφ.
╚asovßnφ se ru╣φ metodou clearInterval(prom∞nnß), kterß funguje obdobn∞ jako clearTimeout().
Proto╛e ve star╣φch verzφch (trojkov²ch) prohlφ╛eΦ∙ ne╣lape metoda setInterval(), obchßzelo se to rekurzφ. Metodou setTimeout("se volala funkce, kterß obsahovala volßnφ sebe samΘ", naΦasovanΘ o interval). Symbolick² zßpis:
function opakovana() {
// n∞co ud∞lß, proto se to Φasuje;
window.setTimeout("opakovana()", 1000); // volß sebe samu odlo╛enou
o sekundu
}
Tento zßpis je je╣t∞ dost Φasto vid∞t a po pravd∞ °eΦeno jej vcelku doporuΦuji, proto╛e t°etφ verze prohlφ╛eΦ∙ ze sv∞ta je╣t∞ nezmizely (aΦkoli si to v╣ichni vroucn∞ p°ejeme).