为什么我在《公安条例》中的计时器不';不行?(javascript)

为什么我在《公安条例》中的计时器不';不行?(javascript),javascript,timer,Javascript,Timer,我在程序中创建了一个计时器,它可以工作 ```let startMinutes = 1; let time = startMinutes * 60; let btnTimer = document.getElementById('btn-signer'); const countdownElt = document.getElementById('countdown'); let interval = setInterval(updateCountDown, 1000); function s

我在程序中创建了一个计时器,它可以工作

```let startMinutes = 1;
let time = startMinutes * 60;
let btnTimer = document.getElementById('btn-signer');
const countdownElt = document.getElementById('countdown');
let interval = setInterval(updateCountDown, 1000);

function startTimer() {

  interval = setInterval(updateCountDown, 1000);
}
btnTimer.addEventListener("click", function () {
  startTimer()
});

function updateCountDown() {
  const minutes = Math.floor(time / 60); //nombre entier
  let seconds = time % 60; //reste division

  seconds = seconds < 10 ? '0' + seconds : seconds;

  countdownElt.innerHTML = `Temps restant : ${minutes}min ${seconds}sec`;

  time--;

  if (minutes <= 0 && seconds <= 0) {
    clearInterval(interval);
    countdownElt.innerHTML = "Temps écoulé, veuillez réserver à nouveau.";```
``让startMinutes=1;
让时间=开始分钟*60;
让btnTimer=document.getElementById('btn-signer');
const countdownlt=document.getElementById('countdown');
let interval=setInterval(updateCountDown,1000);
函数startTimer(){
间隔=设置间隔(更新计数,1000);
}
btnTimer.addEventListener(“单击”,函数(){
startTimer()
});
函数updateCountDown(){
const minutes=Math.floor(time/60);//nombre entier
设秒=时间%60;//reste除法
秒=秒<10?'0'+秒:秒;
countdownElt.innerHTML=`Temps restant:${minutes}min${seconds}sec`;
时间--;

如果(我想你指的是
OOP
(指类、继承等)不是“POO”——尽管我相信许多坚定的函数式编程倡导者可能不同意;)是的,你是对的,我在Javscript中使用object,是的,它是英语的OOP,谢谢:)我的英语现在太差了^^@KarineGRASCIA你可以在这里使用我的快速OOP计时器示例来帮助你。谢谢:)我会看到的!从构造函数中删除
设置间隔
,并在
startTimer
中使用箭头函数作为参考对于间隔:
setInterval(()=>{this.updateCountDown();},1000);
,这是在
updateCountDown
方法中获得正确的
this
所需要的。我想你的意思是
OOP
(用于引用类、继承等)而不是“POO”-虽然我相信许多坚定的函数式编程倡导者可能不同意;)是的,你是对的,我使用Javscript中的object,是的,它是英语的OOP,谢谢:)我的英语现在太差了^^^@KarineGRASCIA你可以在这里使用我的快速OOP定时器示例来帮助你。谢谢:)我会看到的!删除
setInterval
from构造函数,并在
startTimer
中使用箭头函数作为间隔的参考:
setInterval(()=>{this.updateCountDown();},1000);
,这是在
updateCountDown
方法中获得正确的
this
所需的。
``` class countDown {
  constructor() {
    this.btnTimer = document.getElementById('btn-signer');
    this.countdownElt = document.getElementById('countdown');
    this.startMinutes = 1;
    this.timeSec = this.startMinutes * 60;

    this.interval = setInterval(this.updateCountDown, 1000);
    this.btnTimer.addEventListener('click', () => this.startTimer());
    this.updateCountDown();
  }

  startTimer() {

    this.interval = setInterval(this.updateCountDown, 1000);
    //console.log(this.interval);
  }

  updateCountDown() {
    let minutes = Math.floor(this.timeSec / 60); //nombre entier
    let seconds = this.timeSec % 60; //reste division

    seconds = seconds < 10 ? '0' + seconds : seconds;

    document.getElementById('countdown').innerHTML = `Temps restant : ${minutes}min ${seconds}sec`;

    this.timeSec--;

    if (minutes <= 0 && seconds <= 0) {
      clearInterval(this.interval);
      this.countdownElt.innerHTML = "Temps écoulé, veuillez réserver à nouveau.";
    }
  }
}```