Javascript 当另一个音轨启动时,如何停止一个音轨?(仅包含文本链接)

Javascript 当另一个音轨启动时,如何停止一个音轨?(仅包含文本链接),javascript,audio,Javascript,Audio,我试图在同一网页上播放音频文件列表,其中只有一个文本链接作为播放按钮,我发现以下解决方案非常适合我: (感谢@linstantnoodles提供此脚本!) //音频/控制对列表 var播放列表=[{ “音频”:document.getElementById('song1'), “控件”:document.getElementById('song1-control') }, { “音频”:document.getElementById('song2'), “control”:document.g

我试图在同一网页上播放音频文件列表,其中只有一个文本链接作为播放按钮,我发现以下解决方案非常适合我: (感谢@linstantnoodles提供此脚本!)


//音频/控制对列表
var播放列表=[{
“音频”:document.getElementById('song1'),
“控件”:document.getElementById('song1-control')
}, {
“音频”:document.getElementById('song2'),
“control”:document.getElementById('song2-control')
}];
对于(变量i=0;i

我对这段代码唯一的问题是,如果播放一首歌,我开始播放第二首歌,这两首歌同时播放。我已经尝试了很多方法来解决这个问题,但是没有一种有效——我需要如何调整它,以便在第二个问题开始时第一个问题暂停或停止?谢谢

你可以这样做。当一个新的音频启动时,循环播放列表
数组,找到所有不是刚启动的音频元素并停止它们

以下是一个例子:

....
var method = pause ? 'pause' : 'play';
audio[method]();
if(!pause){
    playlist.forEach(function(pl){
        if(pl.audio !== audio){
           pl.audio.pause();
           pl.audio.currentTime = 0;
           pl.control.innerHTML = 'Listen';
        }
    });
}
....

你可以这样做。当一个新的音频启动时,循环播放列表数组,找到所有不是刚启动的音频元素并停止它们

以下是一个例子:

....
var method = pause ? 'pause' : 'play';
audio[method]();
if(!pause){
    playlist.forEach(function(pl){
        if(pl.audio !== audio){
           pl.audio.pause();
           pl.audio.currentTime = 0;
           pl.control.innerHTML = 'Listen';
        }
    });
}
....

谢谢你的快速回复!它不适用于
pl.audio.stop()
,但当我将其更改为
pl.audio.pause()时,它工作得很好;pl.audio.currentTime=0。唯一的缺点是,第一个文件中的textlink playbutton仍然设置为“暂停”-是否有可能将之前的所有按钮重置为“侦听”?我试图更改innerHTML值,但之后我无法再暂停曲目…@modestus我编辑了我的答案以解决所有这些问题。感谢您的快速回复!它不适用于
pl.audio.stop()
,但当我将其更改为
pl.audio.pause()时,它工作得很好;pl.audio.currentTime=0。唯一的缺点是,第一个文件中的textlink playbutton仍然设置为“暂停”-是否有可能将之前的所有按钮重置为“侦听”?我试图更改innerHTML值,但是我不能再暂停曲目了…@modestus我编辑了我的答案来解决所有这些问题。