как остановить счетчик после скрыть модал? - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу подсчитывать только когда показывается модал. но как-то после того, как модал закрыт, счетчик все еще идет вверх. что не так с моим кодом ниже?

$(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('');
    }
  });
});

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

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 );

    }

  };

});
0 голосов
/ 21 апреля 2020

Вы должны знать, как использовать "setInterval" в Javascript.

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

см. https://www.w3schools.com/jsref/met_win_clearinterval.asp

...