我只想在显示模态时计数。但以某种方式关闭模态后,计数器仍在上升。我下面的代码有什么问题?

$(document).ready(function() {
  $('#mymodal').on('shown.bs.modal', function() {
    var seconds = 0;
    $('#mymodal #show_seconds').val(seconds);

    if ($(this).is(':visible') {
      setInterval(function() {
        ++seconds;
        $('#mymodal #show_seconds').val(seconds);
      }, 1000);
    } else {
      $('#mymodal #show_seconds').val('');
    }
  });
});

最佳答案

JavaScript函数不会自动为您销毁。您必须手动清除间隔。

$(document).ready(function() {

  var interval;

  $('#mymodal').on('shown.bs.modal', function() {
    var seconds = 0;
    $('#mymodal #show_seconds').val(seconds);

    if ($(this).is(':visible') {
      interval = setInterval(function() {
        ++seconds;
        $('#mymodal #show_seconds').val(seconds);
      }, 1000);
    } else {
      $('#mymodal #show_seconds').val('');
    }
  });

  $('#mymodal').on('hidden.bs.modal', function () {

    if( interval ) {

      clearInterval( interval );

    }

  };

});

关于javascript - 隐藏模态后如何停止计数器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61337912/

10-09 00:47