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
Ich habe den obigen Code und manchmal funktioniert er, manchmal nicht. Ich frage mich, ob das clearInterval tatsächlich den Timer löscht? weil es diese monitorSchaltfläche gibt, die nur deaktiviert wird, wenn sie in monitoringFunktion ist. Ich habe eine andere, clearIntervalwenn ein Element namens aufgerufen .outputRemovewird. Siehe den folgenden Code:
//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;
});
});
Es wurde jedoch eine Weile aktiviert, bevor es wieder deaktiviert wurde. Wird clearIntervaldas Programm aus der setIntervalFunktion herauskommen ?
clearloop(loopname)das enthält, clearIntervalaber um es zu vereinfachen, habe ich es direkt im obigen Code geändert.
loopnameim zweiten Ausschnitt? Was ist das?