I'm a bit new to js and have been trying to figure out how to stop this function from running when I click on a button. I tried using clearInterval but I am not sure I am doing it properly. Can someone take a look at this code and point me in the right direction?
Code:
<div><h1 id="target"></h1></div>
<button id="stop">Stop</button>
Script:
var arr = [ "one", "two", "three"];
(function timer(counter) {
var text = arr[counter];
$('#target').fadeOut(500, function(){
$("#target").empty().append(text).fadeIn(500);
});
delete arr[counter];
arr.push(text);
setTimeout(function() {
timer(counter + 1);
}, 3000);
$("#stop").click(function () {
clearInterval(timer);
});
})(0);
setInterval(timer);
JS Fiddle: http://jsfiddle.net/58Jv5/13/
Thanks in advance for your help.
You need to give JavaScript a reference to the interval:
var t = setTimeout(function() {
timer(counter + 1);
}, 3000);
Then you can clear it like so:
$("#stop").click(function () {
clearTimeout(t);
});