用javascript停止html声音

用javascript停止html声音,javascript,html,audio,Javascript,Html,Audio,我对javascript的使用没有真正的经验,所以这个问题可能有点傻。我目前正在尝试开发一个音板。一切都很好,除了一件事,我想停止声音时,另一个按钮被点击,我真的不知道我怎么能做到这一点 这是我想做的一个例子: 我单击按钮1,声音播放,当声音仍在播放时,我单击按钮2,按钮1的声音停止,而按钮2的声音开始播放。(依此类推) Html代码: 功能评估声音(soundobj){ var thissound=document.getElementById(soundobj); 这个声音。play();

我对javascript的使用没有真正的经验,所以这个问题可能有点傻。我目前正在尝试开发一个音板。一切都很好,除了一件事,我想停止声音时,另一个按钮被点击,我真的不知道我怎么能做到这一点

这是我想做的一个例子: 我单击按钮1,声音播放,当声音仍在播放时,我单击按钮2,按钮1的声音停止,而按钮2的声音开始播放。(依此类推)

Html代码:

功能评估声音(soundobj){
var thissound=document.getElementById(soundobj);
这个声音。play();
}
音频{
可见性:隐藏;
}

音频元素有一种暂停方法。您可以使用与使用
play
相同的方法使用它


在这个问题中提到了类似的东西:。

Javascript
在处理音频时有一个有用的方法,那就是
pause()

试试这个,如果单击第二个按钮(id=b),停止调用声音的第一个按钮(id=a)


如果我正确理解您的意思,您只需要在js中使用以下内容:

功能评估声音(soundobj){
document.getElementsByClassName('audio').map(函数(thissound){
if(thissound.id==soundobj){
thissound.start();
}
否则{
这个声音。暂停();
}
});

}
如果调用
thissound.pause()
,它将停止播放声音。您要做的是,在函数结束并删除局部变量后,能够调用
thissound.pause()
。这意味着您需要将其存储在一个全局变量中,例如,您可以调用
currentsound
,这样您就可以在另一个
EvalSound
调用中访问它。这会让你得到如下结果:

var currentsound;
function EvalSound(soundobj) {
    currentsound.pause();
    var thissound = document.getElementById(soundobj);
    thissound.play();
    currentsound = thissound;
}
然而,这给我们带来了两个问题。当您调用
EvalSound
时,上一个声音会暂停,当再次调用同一个声音时,它将从暂停时的位置开始。因此,我们需要设置开始播放的时间。另一个问题是,当您第一次调用
EvalSound
时,
currentsound
将被取消定义,并且调用
currentsound.pause()将导致错误。为了解决这个问题,我们可以添加以下内容:

var currentsound;
function EvalSound(soundobj) {
    if(currentsound)
    {
        currentsound.pause();
    }
    var thissound = document.getElementById(soundobj);
    thissound.currentTime = 0;
    thissound.play();
    currentsound = thissound;

}
var currentsound;
function EvalSound(soundobj) {
    if(currentsound)
    {
        currentsound.pause();
    }
    var thissound = document.getElementById(soundobj);
    thissound.currentTime = 0;
    thissound.play();
    currentsound = thissound;

}