先找到网易云的地址,并随便找几首歌
一、网易云地址
http://music.163.com/song/media/outer/url?id=
在网易云里找几首歌曲:
songs:[
{
id:25640392,
name:"淋雨一直走",
artist:"张韶涵"
},
{
id:139808,
name:"快乐崇拜",
artist:"潘玮柏"
},
{
id:25640409,
name:"有形的翅膀",
artist:"张韶涵"
}
]
二、播放器代码
播放时需要给属性src传歌曲地址,用到三个方法:播放play,暂停pause,继续contimue
<audio style="width: 100%;" controls id="player"></audio>
按钮 | 在什么情况下显示 | 点击后设置内容 |
---|---|---|
播放play | 所有非当前歌曲 | 设置src,状态码改成1 |
暂停pause | 当前歌曲,状态码为1 | 状态码改成0 |
继续continue | 当前歌曲,状态码为0 | 状态码改成1 |
用v-if来控制按钮的切换
<button v-if="status==1 && currentId==song.id">暂停</button>
<button v-else-if="status==0 && currentId==song.id" >继续</button>
<button v-else >播放</button>
给每个按钮都绑定一个点击事件,并且用:data-sid来传递歌曲编号
<button @click="doPause" :data-sid="song.id">暂停</button>
<button @click="doContinue" :data-sid="song.id">继续</button>
<button @click="doPlay" :data-sid="song.id">播放</button>
三、按钮点击事件
一共三个点击事件互相切换,打开时所有歌曲显示播放,点击后开始播放,按钮显示“暂停”,再次点击后暂停播放,按钮显示“继续”
//播放
doPlay(event){
vm.currentId = event.srcElement.dataset.sid;
player.src="http://music.163.com/song/media/outer/url?id="+vm.currentId;
player.play();
vm.status=1;
},
//暂停
doPause(){
player.pause();
vm.status=0;
},
//从暂停处开始继续播放
doContinue(){
player.play();
vm.status=1;
}
四、完整代码
导入了vue,jquery,bootstrap的依赖
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="css/bootstrap.min.css" />
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
</head>
<body>
<div id="app">
<table class="table table-bordered">
<tr>
<th>序号</th>
<th>歌曲ID</th>
<th>歌名</th>
<th>歌手</th>
<th>操作</th>
</tr>
<tr v-for="song,index in songs">
<td>{{index+1}}</td>
<td>{{song.id}}</td>
<td>{{song.name}}</td>
<td>{{song.artist}}</td>
<td>
<button v-if="status==1 && currentId==song.id" class="btn btn-danger btn-xs" @click="doPause" :data-sid="song.id">暂停</button>
<button v-else-if="status==0 && currentId==song.id" class="btn btn-warning btn-xs" @click="doContinue" :data-sid="song.id">继续</button>
<button v-else class="btn btn-success btn-xs" @click="doPlay" :data-sid="song.id">播放</button>
</td>
</tr>
</table>
</div>
<audio style="width: 100%;" controls id="player"></audio>
<script type="text/javascript">
var player = document.getElementById("player");
var vm = new Vue({
el:"#app",
data:{
songs:[
{
id:25640392,
name:"淋雨一直走",
artist:"张韶涵"
},
{
id:139808,
name:"快乐崇拜",
artist:"潘玮柏"
},
{
id:25640409,
name:"有形的翅膀",
artist:"张韶涵"
}
],
currentId:0,
status:0
},
methods:{
doPlay(event){
vm.currentId = event.srcElement.dataset.sid;
player.src="http://music.163.com/song/media/outer/url?id="+vm.currentId;
console.log(player);
player.play();
vm.status=1;
},
doPause(){
player.pause();
vm.status=0;
},
doContinue(){
player.play();
vm.status=1;
}
}
})
</script>
</body>
</html>
五、运行结果
歌曲听不到,看播放器的状态就好