2015-10-05 82 views
2

我一直访问本站搜索解决方案,但我找不到我的问题的答案。HTML:多个onclick音频文件,使最后一站停止

我想添加多个音频文件到一个页面。所以我使用了以下编码。这是做什么的,当你点击一个文件,它开始播放音乐,当你点击下一个文件,其他人将暂停。这就是我想要的。

但我也想在每个文件上播放/暂停选项;所以当您点击“夜间游泳”的“监听/暂停”链接时,它会开始播放,并且当您再次单击相同的链接时,它将停止播放。

有什么办法可以做到这一点?我用JavaScript不太方便,我尝试了各种其他代码,但似乎没有任何工作方式我想要它。

我希望有人能帮助我,我希望我的问题是正确的解释(我在荷兰,我为我的英语道歉:S)

这里是我的代码:

<audio id="1"> 
<source src="everynight-snippet.mp3" type='audio/mpeg'> 
</audio> 
<audio id="2"> 
<source src="nightswim-snippet.mp3" type='audio/mpeg'> 
</audio> 

Every Night (<a href="#" onclick="aud_play_pause('1')">Listen/Pause</a>) 
Night Swim (<a href="#" onclick="aud_play_pause('2')">Listen/Pause</a>) 

和脚本:

<script> 
ids = new Array(2); // an array with total number of ids 
function aud_play_pause(idNumber) { 
var idNumber = document.getElementById(idNumber); 

for(var i=0; i<ids.length; i++){ 
document.getElementById(i+1).pause(); // Pause all ids before playing next file. 
document.getElementById(i+1).currentTime = 0; // Set the time back to zero, else it will replay from the pause point. 
} 

idNumber.play(); 
} 
</script> 

所以总结起来:

  • 如果我点击第一首歌曲(Every Night),它就开始播放。当我再次点击它时,它应该停止播放。
  • 如果我在第一首歌曲播放时单击第二首歌曲(夜游),则应停止播放第一首歌曲,并开始播放第二首歌曲。如果我再次点击第二首歌曲,它应该停止。
+0

所以你想要它,如果它已经播放停止点击? – Manu

+0

是的,这正是我想要的:D (并且当您点击另一个链接时仍然有其他停顿......这是否合理?) –

回答

0

你可以检查的ID号音频使用currentTime的财产播放,并启动它,如果它不是。否则,如果当前正在播放,则无论如何都可以停止所有这些播放。

ids = new Array(2); // an array with total number of ids 
 
function aud_play_pause(idNumber) { 
 
    var clickedAudio = document.getElementById(idNumber); 
 

 
    for (var i = 0; i < ids.length; i++) { 
 
    if ((i + 1) == idNumber && clickedAudio.currentTime == 0) { // if it's the current one and is not playing 
 
     clickedAudio.play(); // start it 
 
    } else { // either not the current one, or the current one but it is playing 
 
     document.getElementById(i + 1).pause(); // Pause all ids before playing next file. 
 
     document.getElementById(i + 1).currentTime = 0; // Set the time back to zero, else it will replay from the pause point. 
 
    } 
 

 
    } 
 

 
}

你已经写你的代码虽然暂停所有元素的方式。

+0

这听起来很愚蠢,但我该如何跳过当前播放的? :S –

+0

@GiuliettaRoosien我修改了答案,并检查它是否是当前的答案,如果它已经在播放,则开始播放。否则,如果当前的播放器已经播放,则应该停止播放它们。我希望这符合你的要求。 :) – toskv

+0

XD我显然非常愚蠢......现在第一个(每夜)播放正确,但是当我点击它时,它只是从一开始就开始。当我点击第二个(夜游泳)时,它根本不播放,它只是停止播放所有歌曲...:S –