Eventuali duplicati:
JS - How to clear interval after using setInterval()clearInterval() non funziona
Ho una funzione che cambia il font-family
di un testo ogni 500 ms utilizzando setInterval
(ho fatto solo per praticare JavaScript .) La funzione viene richiamata facendo clic su un pulsante "on" e l'intervallo deve essere cancellato utilizzando un pulsante separato, "off". Tuttavia, il pulsante "off" in realtà non cancella l'intervallo, continua semplicemente. Sospetto che questo abbia qualcosa a che fare con lo scope ma non sono sicuro di come scriverlo in un altro modo. Inoltre, non voglio farlo con jQuery perché, dopo tutto, lo sto facendo per imparare.
<body>
<p><span id="go" class="georgia">go</span> Italian</p>
<p>
<button id="on" type="button" value="turn on">turn on</button>
<button id="off" type="button" value="turn off">turn off</button>
</p>
<script>
var text = document.getElementById("go");
var on = document.getElementById("on");
var off = document.getElementById("off");
var fontChange = function() {
switch(text.className) {
case "georgia":
text.className = "arial";
break;
case "arial":
text.className = "courierNew";
break;
case "courierNew":
text.className = "georgia";
break;
}
};
on.onclick = function() {
setInterval(fontChange, 500);
};
off.onclick = function() {
clearInterval(fontChange);
};
</script>
</body>
Scopri come 'clearInterval' funziona effettivamente leggendo alcuni documenti: https://developer.mozilla.org/en-US/docs/DOM/window.clearInterval. –
Ho dato un'occhiata alle specifiche MDN prima, ma non mi ha aiutato con il problema. –
window.timer = setInterval (fontChange, 500); clearInterval (window.timer) – Samiul