2017-10-18 79 views
0

我有这样的代码,随机化,并从他们的播放列表中的歌曲:随机歌曲 - JavaScript的HTML5

var sounds = [ 
     "sounds/royksopp.mp3", 
     "sounds/9thwonder.mp3", 
     "sounds/thisbeat.mp3", 
     "sounds/mosdef.mp3", 
      "sounds/bewater.mp3", 
      "sounds/boutdre.mp3", 
      "sounds/masterflash.mp3", 
      "sounds/2ep.mp3", 
     "sounds/drewestcoast.mp3", 
      "sounds/poetry.mp3", 
      "sounds/mfdoom.mp3", 
     "sounds/dreams.mp3", 
     "sounds/oizo.mp3", ]; 

function StartOrStop(audioFile) { 
    srcAudio = sounds[Math.floor(Math.random() * sounds.length)]; 
    var audie = document.getElementById("myAudio"); 
    audie.addEventListener('ended', function() { 
     this.currentTime = 0; 
     this.play(); 
    }, false); 

    if (audie.paused == false) { 
     audie.pause(); 
    } else { 
     audie.src = srcAudio; 
     audie.play(); 
    } 
} 

当歌曲停止播放,它与第一个相同的重新启动。我该如何做到这一点,当音乐结束时,它会从我的列表中抓取一首新歌并自动播放它?

回答

1

问题是,您只需在ended事件侦听器中调用this.play()即可。相反,你应该更新src属性与歌曲的随机选择与this.src = srcAudio,类似于你如何初步选择:

function StartOrStop(audioFile) { 
    srcAudio = sounds[Math.floor(Math.random() * sounds.length)]; 
    var audie = document.getElementById("myAudio"); 
    audie.addEventListener('ended', function() { 
     this.currentTime = 0; 
     this.src = srcAudio; 
     this.play(); 
    }, false); 

    if (audie.paused == false) { 
     audie.pause(); 
    } else { 
     audie.src = srcAudio; 
     audie.play(); 
    } 
} 

希望这有助于! :)

+0

将'.src'设置为'else'语句内'audie.src = srcAudio'的目的是什么? – guest271314

+0

好问题,但它在原代码中,所以我认为它是有意的行为。 –

+0

“终止”处理程序中的'srcAudio'与'else'语句中的'srcAudio'设置相同吗? – guest271314