使用我的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);
}
}
欢迎来到SO。
您通过重复使用var
关键字来重新定义player
功能中的Interval1
。相反,只需分配:
// ...
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的评论也解释了这一点。
编辑,再次,per @r3wt
- 请注意,当您需要完美的时间准确性时,JavaScript计时器不一定是最可靠的。请参阅有关一些陷阱的MDN文章。
- 您应该使用
Audio
本机的事件,例如play
,pause
和ended
。您可以在此处查看活动的完整列表。(用法:sound.addEventListener('play'...
)
我不会详细说明太多,您可以找到有关我在网络上提到的内容的更多信息。