隐藏模态后如何停止计数器?

how to stop counter after hide modal?

我只想在显示模态时计数。但不知何故,在模态关闭后,计数器仍在上升。我下面的代码有什么问题?

$(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 中使用 "setInterval"。

var mySetInterval = setInterval(function(){},1000);//create a valuable;
clearInterval(myVar);// delete a valuable;

请参阅https://www.w3schools.com/jsref/met_win_clearinterval.asp