Javascript 无法清除设置间隔

Javascript 无法清除设置间隔,javascript,jquery,html,audio,Javascript,Jquery,Html,Audio,有人能帮我清除下面代码中的设置间隔吗。我已经厌倦了窗口。clearInterval(intervalListener)不工作 <audio id="audio1" controls="controls" ontimeupdate="init(this.currentTime)"; style="display:block;"> <source src="Audio.mp3" type="audio/mpeg"> <source src="Au

有人能帮我清除下面代码中的设置间隔吗。我已经厌倦了窗口。clearInterval(intervalListener)不工作

    <audio id="audio1" controls="controls" ontimeupdate="init(this.currentTime)"; style="display:block;">
    <source src="Audio.mp3" type="audio/mpeg">
    <source src="Audio.ogg" type="audio/ogg">
    <embed height="50" width="100" src="Audio.mp3"></embed>
    </audio>

    function init(val)
    {
    var audio=document.getElementById('audio1');

    if(val==2)
    {
    var a=0;
    intervalListener = self.setInterval(function()

    {
        alert(a);
        if(a===8)
        {
          window.clearInterval(intervalListener);
        }
        a++;
    }, 1000);



    }

    }

函数初始化(val)
{
var audio=document.getElementById('audio1');
如果(val==2)
{
var a=0;
intervalListener=self.setInterval(函数()
{
警报(a);
如果(a==8)
{
clearInterval(intervalListener);
}
a++;
}, 1000);
}
}
两件事:

  • 确保在
    self.setInterval
    self中实际上是窗口
  • alert(a)
    可能在间隔停止JS执行时对其进行了监听,请尝试
    console.log(a)

  • 另外,
    setInterval
    通常最好用
    setTimeout

    function interval(a){
        setTimeout(function(){
            console.log(a);
            if(a<8) interval(++a);
        },1000);
    }
    interval(0);
    
    功能间隔(a){
    setTimeout(函数(){
    控制台日志(a);
    
    如果(a尝试在函数外部声明intervalListener:

    var intervalListener;
    
    function init(val) {
        var audio=document.getElementById('audio1');
    
        if(val==2) {
            var a=0;
            intervalListener = self.setInterval(function(){
                alert(a);
                if(a===8){
                    window.clearInterval(intervalListener);
                }
                a++;
            }, 1000);
        }
    }
    

    你需要在所有函数之外声明
    a
    intervalListener
    ,这样它们就在全局范围内。

    它工作得很好,伙计……这里我知道单独调用时它工作得很好。我需要在播放音频时在ontimeupdate上完成
    var intervalListener;
    
    function init(val) {
        var audio=document.getElementById('audio1');
    
        if(val==2) {
            var a=0;
            intervalListener = self.setInterval(function(){
                alert(a);
                if(a===8){
                    window.clearInterval(intervalListener);
                }
                a++;
            }, 1000);
        }
    }