首页 > 解决方案 > Javascript clearInterval 不起作用(没有错误);秒 相同参数的间隔

问题描述

使用我的 Javascript,我不想在单击按钮后播放声音(使用间隔),并在第二次单击后停止。

没有错误,但间隔仍然存在,当我再次按下按钮时,似乎还有另一个间隔,所以它们一起播放。

var sound_status = 0;
    var aha = 0;
    var z = 9000;
    var Intervall;

    function play_sound(){
            var sound = new Audio(aha);
            sound.play();
            console.log('1');
        }

        function player(){
            sound_status++;
            if(sound_status == '1'){
                var speed = document.getElementById('metrumIN').value;
                var calc1 = speed * 100;
                var Intervall = setInterval(play_sound, 1000);
                aha = 'sound/sound1.mp3';
                console.log(z);
            }
            if(sound_status=='2'){
                sound_status=0;
                window.clearInterval(Intervall);
            }
        }

标签: javascript

解决方案


欢迎来到 SO。

您正在通过重用关键字在函数Interval1内部重新定义。相反,只需分配它:playervar

// ...
Intervall = setInterval(play_sound, 1000);
// ...

繁荣。

编辑,澄清:

如果您没有 if 语句,您将能够重新定义和正确使用您的变量(使用相同的名称只是不好的做法)。例如:

var foo = 'bar';

function test() {
    var foo = 'hello!';
    console.log(foo); // would print out 'hello!'
}

console.log(foo); // would print out 'bar'

但是使用 if 语句,“以后”不能访问重新声明。希望有帮助。

再次编辑:

@r3wt 的评论也解释了这一点。

根据@r3wt 再次编辑

我不打算详细说明,您可以在网上找到有关我刚才提到的更多信息。


推荐阅读