【问题标题】:clearInterval on 'mouseleave'\'mouseleave\' 上的 clearInterval
【发布时间】:2023-01-15 06:26:18
【问题描述】:

我正在使用 Javascript 在我的 html 中创建一个可视计数器。起初计数器为“0”。在 mouseenter 上它开始计数到 ​​10(每秒加 +1),在 moueseleave 上它应该再次重置为 0 并停止计数,但是,当我将光标移开时它只会很快重置为 0,然后继续计数到 10再次,从它在 mouseleave 期间停止的数字开始。

我的代码如下所示:

let timer = ''

box[4]?.addEventListener('mouseenter', () => {
    let sec = 0
    let timer = setInterval(() => {
        box[4].innerHTML = String(1 + sec)
        sec++
        if(sec === 10){
            clearInterval(timer);
        }       
    }, 1000)   
})  

box[4]?.addEventListener('mouseleave', () => {
    clearInterval(timer)
    box[4].innerHTML = String(0) 
})  

我怎样才能改进它以便在 mouseleave 时计数器再次变为 0 并停止任何计数?

【问题讨论】:

    标签: javascript setinterval clearinterval


    【解决方案1】:

    您需要删除 let timer 上的 let

    let timer = ''
    
    box[4]?.addEventListener('mouseenter', () => {
        let sec = 0
        timer = setInterval(() => {
            box[4].innerHTML = String(1 + sec)
            sec++
            if(sec === 10){
                clearInterval(timer);
            }       
        }, 1000)   
    })  
    
    box[4]?.addEventListener('mouseleave', () => {
        clearInterval(timer)
        box[4].innerHTML = String(0) 
    })  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 2017-08-02
      • 1970-01-01
      相关资源
      最近更新 更多