Javascript 对象计时器工作不正常(暂停按钮、播放按钮)

Javascript 对象计时器工作不正常(暂停按钮、播放按钮),javascript,oop,object,timer,Javascript,Oop,Object,Timer,我正在尝试设置一个对象计时器。事实上,当我点击play按钮时,所有功能都正常工作 但当我尝试暂停时,(在console.log中),每次单击时,我的计时器都返回-1(-2,-3等) 我如何防止这种情况 class Timer{ constructor(times){ this.time = times; this.buttonPlay = document.getElementById('play') this.buttonPause =

我正在尝试设置一个对象计时器。事实上,当我点击play按钮时,所有功能都正常工作

但当我尝试暂停时,(在console.log中),每次单击时,我的计时器都返回-1(-2,-3等)

我如何防止这种情况

class Timer{

    constructor(times){
        this.time = times;
        this.buttonPlay = document.getElementById('play')
        this.buttonPause = document.getElementById('pause')
        this.buttonStop = document.getElementById('stop')
        this.displayTimer = document.getElementById('timer')
    }

    decrementTime(){
        t.buttonPlay.addEventListener('click', function(){
            let checked = 0
            let s = setInterval(()=>{
                console.log(t.time[checked]--)
                if(t.time[checked]<0){
                    checked++;
                    console.log('checked = '+ checked)
                    if(checked === 3){
                        clearInterval(s)
                    }
                }
            }, 1000)
            t.buttonPause.addEventListener('click', function(){
                clearInterval(s);
            })
        })
    }
}

let t = new Timer([4, 7, 8]);
t.decrementTime()
类计时器{
建造师(次){
这个时间=次;
this.buttonPlay=document.getElementById('play')
this.buttonPause=document.getElementById('pause')
this.buttonStop=document.getElementById('stop'))
this.displayTimer=document.getElementById('timer'))
}
递减时间{
t、 buttonPlay.addEventListener('click',函数(){
让检查=0
设s=setInterval(()=>{
console.log(t.time[选中]--)
如果(t.time[checked]您得到的“-1”,是因为每次单击播放时,您的程序都从第一个元素开始检查

要避免这种情况,只需将
let checked=0
移动到事件侦听器外部:

类计时器{
建造师(次){
这个时间=次;
this.buttonPlay=document.getElementById('play')
this.buttonPause=document.getElementById('pause')
this.buttonStop=document.getElementById('stop')//对此脚本不执行任何操作
this.displayTimer=document.getElementById('timer')//对此脚本不执行任何操作
}
递减时间{
让检查=0
t、 buttonPlay.addEventListener('click',函数(){
设s=setInterval(()=>{
console.log(t.time[选中]--)
如果(t.时间[选中]<0){
选中++;
console.log('checked='+checked)
如果(选中===t.time.length){
净空间隔(s)
}
}
}, 500)
t、 buttonPause.addEventListener('click',函数(){
净空间隔;
})
})
}
}
设t=新计时器([4,7,8,50]);
t、 递减时间()
播放
暂停
停止

timer
将整数列表传递给timer
类时,您试图实现什么功能?[4,7,8]是我想要递减到0的整数。一个接一个。它实际上在工作,但当我点击暂停时,每次点击都会得到-1。我真的不知道为什么你期望的控制台输出是什么?当我点击暂停时,计时器暂停。之后,我再次播放,计时器继续。实际上,如果我点击暂停,我会得到-1,我不知道为什么我会得到它苏:是的!谢谢你,伙计:)