【发布时间】:2016-11-12 19:07:30
【问题描述】:
我已经在这个论坛上四处看了几天,但找不到任何适合我的确切情况的东西。我知道一些 javascript/jquery,但我不会称自己擅长这种语言...
我有一个从数据库动态获取的 mp3 文件列表,我不希望它能够同时播放多首歌曲。问题是我不知道如何编写“在按下时停止所有其他歌曲,除了连接到此播放按钮的歌曲”的代码。好郁闷啊。。
我的 php 文件:
$result = mysqli_query($link, "SELECT * FROM songs");
$count = 0;
while($row = mysqli_fetch_array($result)) {
$title = $row['title'];
$filename = $row['filename'];
echo '<li data-filename="' . $filename . '" class="song">
<button class="play' . $count . '">Play</button>
<button class="stop' . $count . '">Stop</button>'
. $title .
'</li>';
$count++;
}
这是我的 js 文件:
var count = 0;
$('.song').each(function() {
var filename = 'songs/' + $(this).data('filename');
var audioElement = document.createElement('audio');
audioElement.setAttribute('src', filename);
$('.play' + count).click(function(){
audioElement.play();
// I need to put something here to make all the other songs pause/reset //
});
$('.stop' + count).click(function(){
audioElement.pause();
audioElement.currentTime = 0;
});
count++;
});
由于我真的不知道该怎么做,所以我只是尝试了很多方法,例如:
$(this).siblings().audioElement.pause();
audioElement.siblings().pause();
然后我读了一些关于在播放连接到播放按钮的音频之前停止所有音频的内容。但我不知道如何“收集”所有这些,以便我可以一次停止(暂停和重置)。
我试过这个,但它需要 html5 标签所以它不起作用。
function stopAll() {
var xGroup = document.querySelectorAll('audio');
for (var i = 0; i < xGroup.length; i++) {
xGroup[i].pause();
xGroup[i].currentTime = 0;
}
}
【问题讨论】:
标签: javascript audio