var audio = document.createElement("audio");  
    audio.src = "piano/3C.mp3";  
    audio.addEventListener('ended', function () {  
    // Wait 500 milliseconds before next loop  
    setTimeout(function () { audio.play(); }, 500);  
    }, false);  
    audio.play();  以上代码能够让音频按5毫秒间隔循环播放,现在我只需要循环播放4次,该如何修改?

解决方案 »

  1.   


    var audio = document.createElement("audio");  
        audio.src = "piano/3C.mp3";  
        audio.addEventListener('ended', function () {  
        // Wait 500 milliseconds before next loop  
    var index = 0;
        setTimeout(function () {if(index<4){ audio.play(); index++}}, 500);  
        }, false);  
        audio.play();  
      

  2.   


    不对,还是无线循环播放,alert了index后,一直alert出的是0
      

  3.   

    个人觉得思路应该是用removeEventListener来取消监听,但如何统计播放次数是个问题,希望有高手能够解答!
      

  4.   

    是不是用audio.loop=4就可以了啊.
      

  5.   

    var audio = document.createElement("audio");  
        audio.src = "piano/3C.mp3";  
        audio.addEventListener('ended', function () {  
        // Wait 500 milliseconds before next loop  
        var index = 0;
        setTimeout(function () {if(index<4){ audio.play(); index++}}, 500);  
        }, false);  
        audio.play();  
    这里的index必须设置为全局变量,这是个闭包问题!
    var audio = document.createElement("audio");  
    var index = 0;
        audio.src = "piano/3C.mp3";  
        audio.addEventListener('ended', function () {  
        // Wait 500 milliseconds before next loop  
        setTimeout(function () {if(index<4){ audio.play(); index++}}, 500);  
        }, false);  
        audio.play();  
      

  6.   


    这个是html4的用法,html5不能用!
      

  7.   

    请教楼主: var audio = document.createElement("audio"); 
    audio.addEventListener('ended', function(){//触发不了监ended事件});
    我用的同样方法,触发不了监ended事件。
    谢谢