如何使用jQuery停止setInterval

时间:2017-03-28 08:18:50

标签: jquery

我有一个下拉列表,我可以选择setInterval的时间。

test.php的:

 <select id="proc_id" class="multiselect custom processselect" name="proc_id" style="display: none;">
    <option>Select</option>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
 </select>

如果选择&#34; 0&#34;停止执行setinterval和1 1秒,2秒2秒。

test.js

var set_time = 0;
var interval;

$('#proc_id').change(function() {
    set_time = $('#proc_id :selected').val();
    // alert((set_time));
    if(parseInt(set_time) > 0) {
        set_time= set_time * 1000;
        interval = setInterval(function() {
            getFileProcessList(start_date);
            getResultInfoList(start_date); 
        }, set_time);
    } 
    else {
        alert('bye');
        clearInterval(interval);
    }
}); 

如果我选择0,则不会清除间隔。请任何人都可以帮助您停止setInterval功能吗?

1 个答案:

答案 0 :(得分:1)

您应该在开始新的间隔之前清除上一个间隔。您的代码应该像这样更新

    var set_time = 0;
    var interval = 0;
    $('#proc_id').change(function(){
        set_time=$('#proc_id :selected').val();
        if(parseInt(set_time) > 0) {

            set_time= set_time * 1000;
            if (interval != 0) {
              // clear previous interval before start the new one
              clearInterval(interval);
            }
            interval = setInterval(function() {
                getFileProcessList(start_date);
                getResultInfoList(start_date);
            }, set_time);
        } 
        else {
            clearInterval(interval);
            interval = 0;
        }
    });  

我已在此链接https://jsfiddle.net/mhL907eo/1/创建了一个示例,请检查。