import React, { Component } from 'react';
export default class Music extends Component {
constructor(props) {
super(props);
this.state = {
songs:[
{"id":"1","title":"Love","singer":"cone翻唱团","album":"Love shot","year":"2016","type":"翻唱"},
{"id":"2","title":"Fever","singer":"rosy","album":"Medley Song","year":"2019","type":"原唱"},
{"id":"3","title":"和你","singer":"李飘飘","album":"和你合集","year":"2020","type":"翻唱"},
{"id":"4","title":"我很快乐","singer":"鹿小桃","album":"我很快乐","year":"2019","type":"翻唱"},
{"id":"5","title":"暖暖","singer":"郑豪豪","album":"暖暖","year":"2018","type":"翻唱"},
{"id":"6","title":"我想念","singer":"颜辞","album":"继一.","year":"2021","type":"翻唱"},
{"id":"7","title":"潮汐","singer":"紫沐","album":"潮汐","year":"2022","type":"翻唱"},
{"id":"8","title":"刻在我心底的名字","singer":"卢广仲","album":"刻在我心底的声音","year":"2016","type":"原唱"},
{"id":"9","title":"如故","singer":"卿月怀","album":"载不动愁","year":"2021","type":"原唱"},
{"id":"10","title":"舒伯特玫瑰","singer":"朱康伟;利阳","album":"舒伯特","year":"2019","type":"原唱"}
],
mp3file: '',
nowitem:'',
nowtitle:''
};
}
handleClick(item, e) {
let file='http://localhost:8088/myServer/mybase/mp3/'+item.title+'.mp3';
this.setState({mp3file: file});
this.setState({nowitem: item.id});
this.setState({nowitem: item.title});
console.log(this.state.mp3file);
}
deleteClick(item, e){
let id=item.id;
id=Number(id);
var mp3=this.state.songs;
mp3.splice(id-1,1);
this.setState({songs: mp3});
console.log(id,this.state.songs);
}
nextplay = (e) =>{
let id=this.state.nowitem;
id=Number(id);
let item=this.state.songs[id];
let file='http://localhost:8088/myServer/mybase/mp3/'+item.title+'.mp3';
this.setState({mp3file: file});
this.setState({nowitem: id+1});
this.setState({nowitem: item.title});
}
render(){
return (
<div>
<table style={{width:'80%'}}>
<thead>
<tr>
<td>歌曲名字</td>
<td>歌手</td>
<td>专辑</td>
<td>发行年份</td>
<td>原唱/翻唱</td>
</tr></thead>
<tbody>
{
this.state.songs.map((item, index)=>{
return(
<tr key={"div2_"+index} style={{marginLeft:12, marginTop:4}}>
<td>
<a href="#" onClick={this.deleteClick.bind(this, item)} style={{marginRight:'10px'}}><img src={require('../../images/deletefile.png')} /></a>
<a href="#" onClick={this.handleClick.bind(this, item)} style={{textDecoration:'none'}}><img src={require('../../images/play.png')} width="20" height="20" style={{marginRight:'10px'}}/>{item.title}</a>
</td>
<td>{item.singer}</td>
<td>{item.album}</td>
<td>{item.year}</td>
<td>{item.title}</td>
</tr>
)
})
}</tbody>
</table>
<div >
<button onClick={() => {this.nextplay()}} style={{position:'absolute', top:300, left:60, width:50,height:50,borderRadius:'30%',border: '1px solid #d5d5d5',fontSize:'13px'}}>下一曲</button>
<audio id="myMp3" src={this.state.mp3file} controls="controls" autoPlay="autoplay" preload="auto" style={{position:'absolute', top:300, left:120, width:600}}></audio>
</div>
</div>
)
}
}
mp3歌曲是从后台提取的,以后会做成动态,即数据库提取数据。
还想做一个单曲循环的功能但是还在研究。
本实例还是有bug的,比如说删除了该歌曲,上一曲播放点击下一曲,被删除的仍然可以播放。
- JS实现音乐播放器
JS实现音乐播放器 前 言 最近在复习JS,觉得音乐播放器是个挺有意思的东西,今天就来用我们最原生的JS写一个小小的音乐播放器~ 主要功能: 1.支持循环.随机播放 2.在播 ...
- 原生JS实现音乐播放器!
前 言 最近在复习JS,觉得音乐播放器是个挺有意思的东西,今天就来用我们最原生的JS写一个小小的音乐播放器~ 主要功能: 1.支持循环.随机播放 2.在播放的同时支持图片的 ...
- HTML+纯JS制作音乐播放器
该篇文章会教你通过JavaScript制作一个简单的音乐播放器.包括播放.暂停.上一曲和下一曲. 阅读本文章你需要对HTML.CSS和Javascript有基本的了解. 话不多说,先上图. emmm. ...
- 按ctrl + c 播放下一曲音乐
./a.out . #include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<dirent. ...
- html5 js控制音乐播放
<!DOCTYPE HTML><html><head><meta charset="UTF-8"><script lang ...
- js 实现音乐播放
<html><head><title>这种方式支持任何浏览器</title></head><body><div id=&q ...
- android音乐播放器开发 SweetMusicPlayer 载入歌曲列表
上一篇写了播放器的总体实现思路,http://blog.csdn.net/huweigoodboy/article/details/39855653,如今来总结下载入歌曲列表. 代码地址:https: ...
- 免费音乐播放器-airplay(网上收集,仅供学习与研究,支持正版)
AirPlay媒体播放器无需安装,并不会修改注册表,生成桌面快捷方式,加入启动菜单及快速启动. 因此,您只需要下载本软件,保存在任何地方即可使用.使用方便,界面酷炫. 自动下载和显示歌词.专辑封面.汇 ...
- C#做音乐播放器时在自动下一曲中报异常的解决办法
---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 在利用Media Player做音乐播放器的时 ...
随机推荐
- Nginx 认证模块
# Nginx用户认证模块 # 主要应用业务:文件下载.当用户需要下载某些文件的时候,我们增加用户名和密码机制来进行用户验证. # 该功能的实现是通过ngx_http_auth_basic_modul ...
- powershell和cmd对比
前言 计算机啊这东西,本质上是硬件和软件的综合体.如果只有硬件没有软件的话,这也是台辣鸡而已.而计算机软件中最靠近硬件的一层,就是操作系统层. 操作系统有很多种,比如Unix/Linux/Mac OS ...
- docker 部署私人 nuget 服务
使用docker搭建私有Nuget服务 首先在linux服务器上创建两个容器挂着目录 mkdir /home/nuget/db mkdir /home/nuget/packages 并且对该目录指定写 ...
- 一、JDK和JRE
JDK和JRE JDK=JRE+开发工具包: JRE=JVM+核心类库 如果只是运行Java程序,安装JRE即可:开发Java程序并运行则需要安装JDK.目前最稳定版本是JDK8.0,并且马上部分企业 ...
- [CF1539F] Strange Array (线段树)
题面 有一个长度为 n \tt n n 的序列 a \tt a a ,对于每一个位置 i ∈ [ 1 , n ] \tt i\in[1,n] i∈[1,n]: 选择一个区间 [ l , r ] \tt ...
- 小样本利器3. 半监督最小熵正则 MinEnt & PseudoLabel代码实现
在前两章中我们已经聊过对抗学习FGM,一致性正则Temporal等方案,主要通过约束模型对细微的样本扰动给出一致性的预测,推动决策边界更加平滑.这一章我们主要针对低密度分离假设,聊聊如何使用未标注数据 ...
- 安装docker及使用docker安装其他软件(手动挂载数据卷)
中秋明月,豪门有,贫家也有,极慰人心 Linux安装docker 可以参考官方的安装文档 centos安装docker: https://docs.docker.com/engine/install/ ...
- Spring配置XML本地提示
Spring配置XML本地提示:点击eclipse属性-->选择XML Catalog 这里有一点要注意:要选择schema location
- 数据仓库与hive
数据仓库与hive hive--数据仓库建模工具之一 一.数据库.数据仓库 1.1 数据库 关系数据库本质上是一个二元关系,说的简单一些,就是一个二维表格,对普通人来说,最简单的理解就是一个Excel ...
- Java代码审计之不安全的Java代码
Java代码审计之不安全的Java代码 在打靶场的同时,需要想一下如果你是开发人员你会怎样去防御这种漏洞,而作为攻击方你又怎么去绕过开发人员的防御. 环境搭建 https://github.com ...