Как останавливать setInterval при закрытие всплывающего окна? JS
Есть вот такой код:
$(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 при закрытие всплывающего окна?
Источник: Stack Overflow на русском