如何打破setInterval以启动另一个

时间:2017-09-30 14:22:46

标签: javascript jquery

我想在我的网站中自动重新加载div。如果我点击底部脚本重新加载另一个div,当我使用clearInterval来停止interval1时,它不再工作脚本重新加载interval1,当我使用console.log间隔时,我发现false并且脚本再次重新加载clearInterval不工作或?? ??

<script type="text/javascript">
  var interval2;
  var interval1;
  $(document).ready(function() {
    var get_template = function() {
      $("#live-grouped-odds-current").load("template.php");
    }
    interval2 = setInterval(get_template, 6000);
    $("#live_details").click(function() {
      clearInterval(interval2);
      console.log(interval2);
      $('#live-overview-menuitem').removeClass('Actual');
      $('#live_details').addClass('Actual');
      $("#button_sp").css('display', 'none');
      $("#button_dt").css('display', 'block');
      clearInterval(interval2);
      interval2 = false;
      $("#live-grouped-odds-current").empty();
      $("#loader12").css('visibility', 'visible');
      $("#live-grouped-odds-current").load("details.php");
    });
    $("#loader12").css('visibility', 'visible');
    $.get("details/events.php", function(data1) {
      $("#event_list").html(data1);
    });

    $("#loader12").css('visibility', 'hidden');
    var refresh = function() {
      $.get("details/events.php", function(data1) {
        $("#event_list").html(data1);
      });
      $.get("details/simple_event.php", function(data) {
        $("#simple_event").html(data);
      });
    }
    interval1 = setInterval(refresh, 6000);
  });

  function simple_event(id) {
    clearInterval(interval1);
    $('.Event').removeClass('Actual');

    $("#" + id).attr('class', 'Actual');
    $("#simple_event").empty();
    $("#loader12").css('visibility', 'visible');
    $.get("details/simple_event.php?id=" + id, function(data) {
      $("#simple_event").html(data).hide();
      $("#simple_event").slideDown(1000);
      //alert( "Load was performed." );
      $("#loader12").css('visibility', 'hidden');
    });
    interval1 = setInterval(refresh, 6000);
  }
</script>

1 个答案:

答案 0 :(得分:3)

当您调用clearTimeout时,表示不会再次触发间隔,但如果$("#live-grouped-odds-current").load("template.php");仍在运行,则会完成。如果$("#live-grouped-odds-current").load("template.php");花费的时间超过6000毫秒,您将开始并行执行多个请求。 (我认为最好使用setTimeout)

第一次调用clearInterval(interval2)后,将interval2设置为 undefined

$("#live_details").click(function() {
  clearInterval(interval2);
  inteval2 = undefined;
});

并将 get_template 更改为

var get_template = function() {
  $.get("template.php", function( data ) {
    if (inteval2 !== undefined) {
      $("#live-grouped-odds-current").html( data );
    }
  });
}

如果间隔已被清除,#live-grouped-odds-current将不会被注明日期