html5提供了<audio> 标签定义声音,比如音乐或其他音频流。
下面是<audio> 标签的属性和方法:
接下来要用<audio>标签实现一个播放器:
基本思路:
1. 先画出一个简单的前端界面
2. 利用js代码给歌曲添加onclick点击事件
3. 设置歌曲播放完毕后的处理方法
具体代码:
<!DOCTYPE html>
<html>
<head>
<title>music</title>
<meta charset="gbk">
<link rel="stylesheet" type="text/css" href="music.css">
</head>
<body>
<div id = love>
<audio src="" class="music" controls ></audio>
<ul class="mlist">
<li class="">这个年纪</li>
<li>七月的风</li>
<li>音乐</li>
</ul>
</div>
<script type="text/javascript" src="music.js"></script>
</body>
</html>
js源码:
var musicNode = document.getElementsByClassName('music')[0];//获取audio标签的对象
var mlist = document.getElementsByClassName('mlist')[0];//获取列表
var lis = document.getElementsByTagName('li');//获取所有列表项
var len = lis.length;//列表长度
var musicsrc =['http://i.y.qq.com/rsc/fcgi-bin/fcg_pyq_play.fcg?songid=&songmid=001IVmR52EKTx0&songtype=1&fromtag=50&uin=3233793689&code=52EB9'
,'http://i.y.qq.com/rsc/fcgi-bin/fcg_pyq_play.fcg?songid=&songmid=003NRZIf12Rbsy&songtype=1&fromtag=50&uin=3233793689&code=405BF'
,'http://i.y.qq.com/rsc/fcgi-bin/fcg_pyq_play.fcg?songid=&songmid=000T9Ie41JG3Dc&songtype=1&fromtag=50&uin=3233793689&code=F9B10'
];
//初始化audio的歌曲源路径
musicNode.src = musicsrc[0];
for (var i = 0; i < len; i++) {//单击改变playmusic
(function(i){
lis[i].onclick =function(){
musicNode.src = musicsrc[i];
//重新加载
musicNode.load();
//播放
musicNode.play();
//将其他列表项的classname改为空
for (var j= 0; j < len; j++) {
lis[j].className = '';
}
this.className = 'play';
}})(i);
}
musicNode.onended =function(){//音乐播放完后自动下一曲
var ended = getPlay();
if (ended == len-1) {//若为最后一曲则放第一曲
musicNode.src = musicsrc[0];
lis[0].className = 'play'
lis[ended].className = '';
musicNode.load();
musicNode.play();
}else{
musicNode.src = musicsrc[ended + 1];
lis[ended + 1].className = 'play';
lis[ended].className = '';
musicNode.load();
musicNode.play(); }
}
function getPlay(){//获取正在播放music的li
for (var i = 0; i < len; i++) {
if (lis[i].getAttribute('class') == 'play') {
return i
}
}
}
实现效果:
{{ cmt.username }}
{{ cmt.content }}
{{ cmt.commentDate | formatDate('YYYY.MM.DD hh:mm') }}