Powiel możliwe:
JS - How to clear interval after using setInterval()clearInterval() nie działa
Mam funkcja, która zmienia font-family
jakiegoś tekstu co 500 ms wykorzystujące setInterval
(zrobiłem to po prostu ćwiczyć JavaScript .) Funkcja jest wywoływana przez kliknięcie przycisku "on", a interwał powinien zostać wyczyszczony za pomocą osobnego przycisku "off". Jednak przycisk "off" w rzeczywistości nie kasuje interwału, po prostu trwa. Podejrzewam, że ma to coś wspólnego z zasięgiem, ale nie jestem pewien, jak napisać to w jakikolwiek inny sposób. Ponadto nie chcę tego robić z jQuery, ponieważ w końcu robię to, aby się uczyć.
<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>
Dowiedz się, jak działa 'clearInterval', czytając trochę dokumentacji: https://developer.mozilla.org/en-US/docs/DOM/window.clearInterval. –
Najpierw przyjrzałem się specyfikacji MDN, ale nie pomogło mi to z problemem. –
window.timer = setInterval (fontChange, 500); clearInterval (window.timer) – Samiul