Как останавливать setInterval при закрытие всплывающего окна? JS

Рейтинг: 0Ответов: 0Опубликовано: 22.05.2023

Есть вот такой код:

$(document).on("click", ".window-show", function () { 
  window_name = $(this).data('name'); 
  $.ajax({ 
    type: "POST", 
    url: "/core/ajax.php", 
    data: { 
      do: "get_window", 
      window_name: window_name, 
    }, 
    success: function (result) { 
      $('.modal__window').html(result) 
    } 
  }); 
});

ajax php

elseif ($_POST['do'] == 'get_window' && isset($_POST['window_name'])) { 
  $window_name = $_POST['window_name']; 
  include __DIR__ . "/windows/{$window_name}/{$window_name}.php"; 
}

Который выполняет парсинг одного из окна на странице, т.е. все окна на сайте появляются из этого кода.

В одном из сплывающих окно есть у меня есть setInterval который при закрытие окна не останавливается,

function timer(timer, second) { 
  timer.html(format_time(second)); 
  let interval = setInterval(function () { 
    if (timer.length > 0) { 
      --second; 
      timer.html(format_time(second)); 
    } else { 
      clearInterval(interval); 
    } 
  }, 1000); 
}

Я уже пробовал сверять length у timer при каждом интевале (timer по сути не существует т.к. окно было закрыто, а данные о нём удалены), пробовал обновлять данные с помощью data и сверять length, но всё это не работает, браузер как будто железобетонно кеширует этот тег и он как будто есть. Скажу больше даже когда я меняю html у timer и вывожу в консоль, html не существующего объекта тоже меняет.

Так вот, как останавливать setInterval при закрытие всплывающего окна?

Ответы

Ответов пока нет.