H5 jQ 歌词定位时间

2017-07-05  本文已影响0人  Sasoli
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
    #txt{
        width: 300px;
        height: 500px;
        margin: 0 auto;
        border: 1px solid #000;
        /*float: right;*/
    }
    audio{
        position: relative;
        left: 50%;
        margin-left: -150px;
    }
</style>
</head>
<body>
<audio src="" controls="controls"></audio>

<div id="txt"></div>
</body>
<script src="js/jquery-3.1.1.min.js"></script>
<script>
var data = [
    {
        "title":'测试文本',
//            "time":[10,23,52,70,194,256],
        "audio_src":'http://mp3dkm.oss-cn-shanghai.aliyuncs.com/test/2.mp3',
        "message":['[00:00:01]10s内测试文本','[00:00:10]10s至50s,测试文本','[00:00:50]50s开始,这是一段很长的测试文本。一直到2m13s','[00:02:13]2m13s至3m28s测试文本','[00:03:28]测试文本结束']
    }
];
//获取音频地址并添加
var src = data[0].audio_src;
$('audio').attr('src',src);
//定义出来方便以后用
var lrc = '';
var time = '';
//获取信息数据
var message = data[0].message;
//遍历
$.each(message, function (index, value) {
    //调整需要显示到p标签的文字
    var lrc0 = message[index].split(']');
    lrc = lrc0[1];
    //创建p标签,把文字加进去
    var p = $('<p>'+ lrc +'</p>');
    //插入到文本框
    $('#txt').append(p);
    //调整时间
    var time0 = lrc0[0];
    var time1 = time0.split('[');
    var time2 = time1[1].split(':');
    //监听音频播放时间
    $('audio')[0].addEventListener('timeupdate', function () {
        //转换数据类型一致
        var currentTime = parseInt($('audio')[0].currentTime);

        time = parseInt(time2[0]*60*60)+parseInt(time2[1]*60)+parseInt(time2[2]);
        //为每个创建的p标签动态加id
        p.attr('id','lrc'+time);

        if(time <= currentTime){
            p.css('color','red')
        }else {
            p.css('color','black')
        }
        //点击歌词定位播放时间
        p.click(function () {
            //把id的数字部分取出来
            var cTime = parseInt(this.id.split('c')[1]);
            $('audio')[0].currentTime = cTime;
        })
    })
});
</script>
</html>
上一篇 下一篇

猜你喜欢

热点阅读