JavaScript omogoča izvajanje programske kode z zamikom ali v ponavljajočih se časovnih intervalih. Tak način izvajanja imenujemo časovni dogodki.
Pomni: Metodi setTimeout() in setInterval() vrneta identifikator (ID), ki ga uporabimo za prekinitev izvajanja.
Osnovna pravila
setTimeout()izvede funkcijo enkrat po določenem času.setInterval()ponavlja izvajanje funkcije.- Čas podajamo v milisekundah (
1000ms =1s). - Kot parameter uporabljamo funkcijo, ne niza besedila.
Metoda setInterval()
Metoda setInterval() ponavlja izvajanje funkcije v določenem časovnem intervalu.
setInterval(funkcija, čas);
<p>Prikaz trenutnega časa: <b><span id="cas"></span></b></p>
<script>
const intervalCas = setInterval(function () {
const t = new Date();
document.getElementById("cas").textContent = t.toLocaleTimeString();
}, 1000);
</script>
Prikaz trenutnega časa:
Metoda setTimeout()
Metoda setTimeout() izvede funkcijo enkrat po določenem času.
setTimeout(funkcija, čas);
<p>S klikom sprožimo spremembo slike po 3 sekundah.</p>
<button onclick="zamenjajSliko()">Klikni me!</button>
<br><br>
<img src="../../_slike/kosarka.png" id="slika">
<script>
function zamenjajSliko() {
setTimeout(function () {
document.getElementById("slika").src = "../../_slike/nogometna.png";
}, 3000);
}
</script>
S klikom sprožimo spremembo slike po 3 sekundah.
Metoda clearInterval()
Metoda clearInterval() ustavi ponavljanje funkcije.
clearInterval(ID_intervala);
<p>Prikaz časa: <b><span id="cas1"></span></b></p>
<button onclick="clearInterval(intervalCas1)">Ustavi čas</button>
<script>
const intervalCas1 = setInterval(function () {
const t = new Date();
document.getElementById("cas1").textContent = t.toLocaleTimeString();
}, 1000);
</script>
Prikaz časa:
Metoda clearTimeout()
Metoda clearTimeout() prekine zakasnitev izvajanja.
clearTimeout(ID_timeouta);
<button onclick="zagon()">Začni</button>
<button onclick="prekini()">Prekini</button>
<br><br>
<img src="../../_slike/kosarka.png" id="slika1">
<script>
let timeoutId;
function zagon() {
timeoutId = setTimeout(function () {
document.getElementById("slika1").src = "../../_slike/nogometna.png";
}, 3000);
}
function prekini() {
clearTimeout(timeoutId);
}
</script>
Priporočila
- Za ponavljajoče naloge uporabljaj
setInterval(), za enkratne pasetTimeout(). - Identifikator časovnika vedno shrani v spremenljivko.
- Časovnike ustavi, ko niso več potrebni.
- Pri animacijah razmisli o uporabi
requestAnimationFrame().
Pozor: Uporaba nizov, na primer setInterval("koda", 1000), ni priporočljiva zaradi slabše varnosti in učinkovitosti.
Pogoste napake
- Uporaba nizov namesto funkcij.
- Neustavljanje intervalov.
- Nepravilno shranjevanje identifikatorja časovnika.