Возможный дубликат:
JS - Как очистить интервал после использования setInterval()
У меня есть функция, которая изменяет font-family
некоторого текста каждые 500 мс, используя setInterval
(я сделал это только для практики JavaScript). Функция вызывается нажатием кнопки «вкл», и предполагается, что интервал очищается с помощью отдельной кнопки , "выключенный". Однако кнопка «Выкл.» на самом деле не очищает интервал, он просто продолжается. Я подозреваю, что это как-то связано с областью действия, но я не уверен, как написать это по-другому. Кроме того, я не хочу делать это с jQuery, потому что, в конце концов, я делаю это, чтобы учиться.
<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>