<div id="audioBox"></div>
<script type="text/javascript">
    window.onload = function(){
        var arr = ["3.mp3","2.mp3","1.mp3"];//把需要播放的歌曲从后往前排
        var myAudio = new Audio();
        myAudio.preload = true;
        myAudio.controls = true;
        myAudio.src = arr.pop();//每次读数组最后一个元素
        myAudio.addEventListener('ended', playEndedHandler, false);
        myAudio.play();
        document.getElementById("audioBox").appendChild(myAudio);
        myAudio.loop = false;//禁止循环,否则无法触发ended事件
        function playEndedHandler(){
            myAudio.src = arr.pop();
            myAudio.play();
            console.log(arr.length);
            !arr.length && myAudio.removeEventListener('ended',playEndedHandler,false);//只有一个元素时解除绑定
        }
    }
</script>

解决方案 »

  1.   

    <audio controls>
    <source src="1.mp3" />
    <source src="2.mp3" />
    </audio>
    ============================知道为什么html5设计成可以多个src吗?人家的原意是以防其中一些src文件无法播放时,可以尝试播放其它,并不是播放列表来的。简单讲就是从上到下尝试播放,直到可以播放为止。假如第一个可以播放后面的就没用了。for(var i=0;i<b.length;i++){
    audioElm.src=b[i];
    audioElm.play(); 
    }
    ============================这又是另一个概念了:你这是反复对src赋值,当然是最后一个有效。就好像你不断试穿衣服,到出门时你最终也是只穿了最后一次试的那件上衣。onratechange:当媒介数据的播放速率改变时运行脚本!这只是一个回调函数。就好像说你感冒了就去看医生,这只是一个事件处理。但并不表明你现在就感冒了。“我的要求是,在5秒中播放完”重点是你怎么样要求它快进的?
      

  2.   

    谢谢了。
    我的音频文件2.mp3 长度有12秒,但是,两段有空白的(就是从3s-9s有声音),因此我只希望播放3s-9s。我不希望剪辑音频,因为太土了。
    使用#t=3:9,就不能触发ended的事件,真是上火,我已给html5小组发邮件了,说明,此处有bug。
    我的audio标签,
    我应该怎么办啊?谢谢了,我百度了所有的资料。
      

  3.   

    <div id="audioBox"></div>
    <script type="text/javascript">
        window.onload = function(){
            var myAudio = new Audio();
            myAudio.preload = true;
            myAudio.controls = true;
            myAudio.src = "1.mp3";
            myAudio.playbackRate=3;//快进3
            myAudio.play();
            var t=0;
            var tt = setInterval(function(){
                t++;
                if(t==1){
                    myAudio.playbackRate=1;//恢复正常播放
                }else if(t>7){
                    myAudio.playbackRate=100;//快进,达到尽快结束
                    clearInterval(tt);
                }
            },1000);//这里设短了又不起效果
            document.getElementById("audioBox").appendChild(myAudio);
            myAudio.loop = false;//禁止循环
        }
    </script>