javascript - 如何将<ul>播放列表中的不同MP3文件链接到相同的<audio>标签?

标签 javascript jquery html audio

我找到了一个很好的教程,介绍如何使用HTML 5 <audio>标签和JavaScript(http://blog.lastrose.com/html5-audio-video-playlist/)构建播放列表。

但是,当我将该代码复制到网站中时,它根本无法正常工作,因为播放列表的每个元素(如果单击)都会在新页面中启动新的音频播放器,而不是由播放列表上方的同一播放器播放。

如何将<ul>播放列表中的不同MP3文件链接到相同的<audio>标签?

这是我的代码

var video_player = document.getElementById("video_player");

var links = video_player.getElementsByTagName('a');

for (var i = 0; i < links.length; i++) {

    links[i].onclick = handler;

}



function handler(e) {

    e.preventDefault();

    videotarget = this.getAttribute("href");

    filename = videotarget.substr(0, videotarget.lastIndexOf('.')) || videotarget;

    video = document.querySelector("#video_player video");

    video.removeAttribute("controls");

    video.removeAttribute("poster");

    source = document.querySelectorAll("#video_player video source");

    source[0].src = filename + ".mp4";

    source[1].src = filename + ".webm";

    video.load();

    video.play();    

}
<audio controls id="player">
  <source src="01 Scusate.mp3" type="audio/mp3">
  <source src="22 Gli affitti.mp3" type="audio/mp3">
</audio>

<ul id="playlist">
<li class="playlist"><a href="01 Scusate.mp3" class="p">Scusate - Gino Negri   performer</a></li>
<li class="playlist"><a href="22 Gli affitti.mp3" class="p">Gli affitti - Sandro Massimini</a></li>
</ul>


非常感谢能够在JavaScript中发现错误并提出解决方案的任何人。

最佳答案

我在乐队的页面上有此功能。

这是我的做法:

/* HTML5 player */
$('#playlist li').on('click', pickSong);

var pickSong = function(ev){
var item = ev.target;
var audio = $("audio")[0];
var pad = 'muziek\\';
audio.pause();
$('#mp3src').attr('src', '').attr('src', pad.concat(item.getAttribute('data-val'),'.mp3'));
$('#oggsrc').attr('src', '').attr('src', pad.concat(item.getAttribute('data-val'),'.ogg'));
audio.load();
audio.play();

$('#playlist li').removeClass('plays');
$(item).addClass('plays');

}

在HTML中:
<audio controls preload="none">
    <source id="mp3src" src="muziek/friend.mp3" type="audio/mp3">
    <source id="oggsrc" src="muziek/friend.ogg" type="audio/ogg">
</audio>
<ul id="playlist">
    <li class="plays" data-val="friend"></li>
    <li data-val="mercy"></li>
    <li data-val="anouk"></li>
    <li data-val="tmyfml"></li>
    <li data-val="krezip"></li>
</ul>

关于javascript - 如何将<ul>播放列表中的不同MP3文件链接到相同的<audio>标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25959436/

相关文章:

Javascript 淡入淡出不工作

jquery - 谷歌喜欢日历事件 View 但水平界面

javascript - Ajaxify(回调方法)

javascript - 如何用图像填充多边形?

javascript - 使用Canvas,如何绘制用户输入X次的形状?

javascript - 在 HTML5 Javascript 中将 BlobBuilder 转换为字符串

javascript - JS模态窗口(弹出窗口)之间的通信

javascript - React Native 可能出现未处理的 Promise 拒绝

javascript - 当我单击元素的子元素时更改状态(+AngularJS)

html - 您将如何使用 HTML 和 CSS 实现此导航?