javascript - 如何在播放列表代码中添加自动下一首歌曲
问题描述
我正在玩在互联网上找到的代码,到目前为止一切都很好,我只想添加一个东西,但我不知道确切的方法。它是一个音频播放器,这里是播放列表的 HTML 端。
<ul id="playlist" class="">
<li song="1.mp3" cover="1.jpeg" artist="artist 1">song 1</li>
<li song="2.mp3" cover="2.jpeg" artist="artist 2">song 2</li>
<li song="3.mp3" cover="3.png" artist="artist 3">song 3</li>
<li song="4.mp3" cover="4.png" artist="artist 4">song 4</li>
</ul>
这是统治这一切的整个代码
var audio;
//Hide Pause Button
$('#pause').hide();
//Initialize Audio
initAudio($('#playlist li:first-child'));
//initialiser function
function initAudio(element) {
var song = element.attr('song');
var title = element.text();
var cover = element.attr('cover');
var artist = element.attr('artist');
//create an audio object
audio = new Audio('media/' + song);
if(!audio.currentTime) {
$('#duration').html('0.00');
//display 0 time
}
$('#audio-player .title').text(title);
$('#audio-player .artist').text(artist);
//insert a cover image
$('img.cover').attr('src','img/covers/' + cover);
$('#playlist li').removeClass('active');
element.addClass('active');
}
//Play button
$('#play').click(function() {
audio.play();
$('#play').hide();
$('#pause').show();
$('#duration').fadeIn(100);
showDuration();
});
//Pause button
$('#pause').click(function() {
audio.pause();
$('#pause').hide();
$('#play').show();
});
//Stop button
$('#stop').click(function() {
audio.pause();
audio.currentTime = 0;
$('#pause').hide();
$('#play').show();
$('#duration').fadeOut(400);
});
//Next Button
$('#next').click(function(){
audio.pause();
var next = $('#playlist li.active').next();
if (next.length == 0) {
next = $('#playlist li:first-child');
}
initAudio(next);
audio.play();
showDuration();
});
//Prev Button
$('#prev').click(function(){
audio.pause();
var prev = $('#playlist li.active').prev();
if (prev.length == 0) {
prev = $('#playlist li:last-child');
}
initAudio(prev);
audio.play();
showDuration();
});
//Playlist Song Click
$('#playlist li').click(function () {
audio.pause();
initAudio($(this));
$('#play').hide();
$('#pause').show();
$('#duration').fadeIn(400);
audio.play();
showDuration();
});
//Volume Control
$('#volume').change(function(){
audio.volume = parseFloat(this.value / 30);
});
//time duration
function showDuration() {
$(audio).on('timeupdate', function() {
//get hours and minutes
var s = parseInt(audio.currentTime % 60);
var m = parseInt((audio.currentTime) / 60) % 60;
//add 0 if less than 10
if(s < 10) {
s = '0' + s;
}
$('#duration').html(m + '.' + s);
var value = 0;
if(audio.currentTime > 0) {
value = Math.floor((100 / audio.duration ) * audio.currentTime);
}
$('#progress').css('width', value + '%');
});
}
正如我所说的一切正常,我错过了自动化。
有人请尝试帮助我吗?
TIA
编辑:好像我解决了以这种方式添加功能
audio.onended = function(e) {
audio.pause();
var next = $('#playlist li.active').next();
if (next.length == 0) {
next = $('#playlist li:first-child');
}
initAudio(next);
audio.play();
}
就在下面audio = new Audio('media/' + song);
它在代码方面看起来不错吗?
解决方案
推荐阅读
- javascript - 如何在 JavaScript 中遍历存储在 firebase 数组中的对象?
- sqlite - Python 2.7 sqlite3 如何判断空字段
- ios - 动态设置 UIViewController 指针内联 - Objective C
- javascript - 输入值不保存,当推入数组时给出未定义的值
- javascript - 图表 JS 自定义标签不起作用
- typo3 - 多域和ipandlanguageredirect
- excel - 将表格从 Word 导入 Excel;多字文件类型
- xampp - 无法加载动态库 php_zmq.dll - 找不到指定的模块
- git - 我想使用本地文件而不是子模块文件
- selenium - 如何解释 XPath?