все еще застрял :)
Мне нужно очистить Timeout, когда обратный отсчет закончится (vm.minutes == 0 и vm.secondes == 0) и когда мы нажмем кнопку, чтобы перезапустить ее.
Может быть здорово очистить sessionStorage, когда обратный отсчет закончится. Я знаю, что использовать, но это не работает ...
Есть мысли?
class Timer {
constructor(secondes, minutes) {
this.button = document.getElementById("button");
this.counter = document.getElementById("counter");
if(!this.storageCheck()){ //check if seconds are mins are stored in storage
this.secondes = secondes; //if not set mins and sec to value passed in constructor
this.minutes = minutes;
}
else{
this.countdown();
}
}
countdown() {
// debugger;
var vm=this;
if(!(this.minutes-1<0))
this.minutes--;
let tick= function(){
vm.secondes--
if(vm.secondes== -1){
vm.secondes=59;
vm.minutes--;
}
vm.counter.innerHTML = vm.minutes + ":" + (vm.secondes < 10 ? "0" : "") + vm.secondes;
if(vm.minutes == 0 && vm.secondes==0){
vm.counter.innerHTML = vm.minutes + ":" + vm.secondes-1;
vm.counter.innerHTML = "Réservation expirée";
//webstorage.clearSessionStorage();
}
else{
var go = setTimeout(tick,1000);
}
sessionStorage.setItem("mins",vm.minutes);//set current min
sessionStorage.setItem("secs", vm.secondes);//set current sec
}
var go = setTimeout(tick,1000);
}
buttonClick() {
button.addEventListener("click", () => {
this.countdown();
})
}
storageCheck() {
if (sessionStorage.getItem("mins") && sessionStorage.getItem("secs")) {
// keep the countdown running
this.minutes=parseInt(sessionStorage.getItem("mins"))+1;//get min
this.secondes=parseInt(sessionStorage.getItem("secs"));//get secs
return true;
}
else
return false;
}
}
let newTimer = new Timer(60, 20); //60, 20
newTimer.buttonClick();
<!DOCTYPE html>
<html>
<head>
<title>Test Countdown</title>
</head>
<body>
<div id="counter"></div>
<button id="button">storage</button>
<script type="text/javascript" src="countdown.js"></script>
</body>
</html>
введите описание изображения здесь