Отображение обратного отсчета в Django Loop при нажатии не работает должным образом
Здравствуйте, у меня есть следующий обратный отсчет в Javascript, который находится внутри цикла Django for, и он отображается более одного раза.
В моей текущей ситуации, когда я нажимаю на любую из кнопок запуска обратного отсчета, работает только первая. Я хочу иметь возможность щелкнуть на любой из них, и каждая из них работала отдельно при щелчке, а не одновременно.
вот сценарий:
<button id="myBtn" onclick="myFunction()" type="button" class="btn btn-warning">
<i class="fa-solid fa-play" style="margin-right:2px"></i>
<span id="demo" class="countdown-live" style="text-align:center;"></span>
</button>
<script type="text/javascript">
var countDownDate = new Date(Date.now() + 45000).getTime();
var x = setInterval(function() {
var now = new Date().getTime();
var distance = countDownDate - now;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById("demo").innerHTML = minutes + " : " + seconds + " ";
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").innerHTML = 'Done';
}
}, 1000);
</script>
Мой вопрос:
Как нажать на любую из кнопок обратного отсчета внутри django forloop, чтобы она работала правильно, так как сейчас работает только первая, когда я нажимаю на любую кнопку на странице.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button onclick="counter_function()">Start</button>
<button id="myBtn" type="button" class="btn btn-warning" style="display: none">
<i class="fa-solid fa-play" style="margin-right:2px"></i>
<span id="demo" class="countdown-live" style="text-align:center;"></span>
</button>
<script type="text/javascript">
var x = null;
function counter_function(){
clearInterval(x);
document.getElementById("demo").innerHTML = 0 + " : " + 0 + " ";
document.getElementById("myBtn").style.display = "block";
var countDownDate = new Date(Date.now() + 45000).getTime();
x = setInterval(function() {
var now = new Date().getTime();
var distance = countDownDate - now;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById("demo").innerHTML = minutes + " : " + seconds + " ";
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").innerHTML = 'Done';
}
}, 1000);
}
</script>
</body>
</html>