JavaScript实现音乐自动切换和轮播


Posted in Javascript onNovember 05, 2017

前言:前两天有个同学问我音乐自动切换,并在所有歌曲都播放完成以后实现循环播放的效果。自己折腾了一下做了出来,今天整理桌面的时候突然看见,在拖到回收站的一瞬间想着还是写一篇博客分享一下。实现的方法有很多种,我这里简单的实现。

通过修改video的src(这种应该是最好节省资源的)

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>welcome</title>
 <style type="text/css">
  .content {
   width: 600px;
   margin:0 auto;
   border:1px solid red;
  }
  .left-bar {
   width: 300px;
   height: 200px;
   float: left;
   border:1px solid red;
  }
  ul li {
   list-style: none;
   margin-top: 20px;
   cursor: pointer;
  }
  li:hover {
   color: orange;
  }
 </style>
</head>

<body>
<div class="left-bar">
 <ul>
  <li class="music-name">十年</li>
  <li class="music-name">朋友</li>
  <li class="music-name">勇气</li>
 </ul>
</div>
<div class="content">
 <video src="" id="video1" controls autoplay></video>
 <button id="btn">按钮</button>
</div>

<script>
 window.onload = function() {
  // 歌曲列表
  var music = [
   {id: 1, name:"十年"},
   {id: 2, name:"朋友"},
   {id: 3, name:"勇气"}
  ]
  // 记录当前是哪首歌曲
  var currentMusic = 0;
  // 获取DOM
  var oVideo1 = document.querySelector("#video1");
  // 初始化
  oVideo1.src = music[0].name + '.mp3';

  // 歌曲结束事件
  oVideo1.onended = function() {
   currentMusic += 1;
   // 判断是否是最后一首
   if(currentMusic === music.length) {
    currentMusic = 0;
   }
   var sr = music[currentMusic].name + '.mp3';
   this.src=sr;
  }

  // 获取左边歌曲列表的DOM
  var aList = document.getElementsByClassName("music-name");
  for(var i=0; i<aList.length; i++) {
   // 为了知道具体是那一个li
   aList[i].index = i;
   // 给每一个li设定一个事件
   aList[i].onclick = function() {
    oVideo1.src = music[this.index].name + ".mp3";
   }
  }
 }
</script>

</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
json简单介绍
Jun 10 Javascript
js下用gb2312编码解码实现方法
Dec 31 Javascript
深入理解JavaScript中的传值与传引用
Dec 09 Javascript
实例分析js和C#中使用正则表达式匹配a标签
Nov 26 Javascript
重写document.write实现无阻塞加载js广告(补充)
Dec 12 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
Aug 25 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
JavaScript数据结构中串的表示与应用实例
Apr 12 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
Apr 07 Javascript
浅谈Node框架接入ELK实践总结
Feb 22 Javascript
javascript实现雪花飘落效果
Aug 19 Javascript
vue+node+webpack环境搭建教程
Nov 05 #Javascript
JavaScript实现三级级联特效
Nov 05 #Javascript
angular中不同的组件间传值与通信的方法
Nov 04 #Javascript
详解使用React全家桶搭建一个后台管理系统
Nov 04 #Javascript
JavaScript中立即执行函数实例详解
Nov 04 #Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 #Javascript
浅谈Vuex的状态管理(全家桶)
Nov 04 #Javascript
You might like
php简单实现数组分页的方法
2016/04/30 PHP
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
详解vue-cli3使用
2018/08/14 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
python实现网站的模拟登录
2016/01/04 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
Python把csv数据写入list和字典类型的变量脚本方法
2018/06/15 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
应届生护士求职信
2013/11/01 职场文书
初中数学教学反思
2014/01/16 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
求职个人评价范文
2014/04/09 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
2014年教研员工作总结
2014/12/23 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
python脚本框架webpy的url映射详解
2021/11/20 Python