bigloop=setInterval(function () { var checked = $('#status_table tr [id^="monitor_"]:checked'); if (checked.index()===-1 ||checked.length===0 || ){ bigloop=clearInterval(bigloop); $('#monitor').button('enable'); }else{ (function loop(i) { //monitor element at index i monitoring($(checked[i]).parents('tr')); //delay of 3 seconds setTimeout(function () { //when incremented i is less than the number of rows, call loop for next index if (++i < checked.length) loop(i); }, 3000); }(0)); //start with 0 } }, index*3000); //loop period 

I have the code above and sometimes it is working, sometimes it is not. I am wondering if the clearInterval actually clear the timer?? because there is this monitor button that will only be disabled when it is in monitoring function. I have another clearInterval when an element called .outputRemove is clicked. See the code below:

//remove row entry in the table $('#status_table').on('click', '.outputRemove', function () { deleted= true; bigloop= window.clearInterval(bigloop); var thistr=$(this).closest('tr'); thistr.remove(); $('#monitor').button('enable'); $('#status_table tbody tr').find('td:first').text(function(index){ return ++index; }); }); 

But it was enabled for a while before it is disabled again. Will clearInterval get the program out from the setInterval function?

2

1 Answer

Yes you can. You can even test it:

var i = 0; var timer = setInterval(function() { console.log(++i); if (i === 5) clearInterval(timer); console.log('post-interval'); //this will still run after clearing }, 200);

In this example, this timer clears when i reaches 5.

11

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy