前提・実現したいこと
先日、音楽をランダムに、且つ連続で再生するJavaScriptをTeratailの質問を参考の元作成させていただきました。そこでJavaScriptをHTMLに埋め込む形式で同様のものを作りたいと思っています。
以前の質問:音楽を繰り返し再生する
発生している問題・エラーメッセージ
実際に行ってみたところ、1曲目は再生されるものの、2曲目以降が自動で再生しなくなりました。
万が一、埋め込みにするとそういった動作ができなくなるのであれば、その旨を教えていただけると幸いです。
該当のソースコード
以下の以前の形のHTML・Javascriptでは動作します。
※正常な動作:自動でランダムに連続で再生される
HTML
1<div id="audiowrap"> 2 <audio id="audioElement" controls> 3 <source id="srcElement" src="" type="audio/mp3"> 4 </audio> 5</div> 6<script type="text/javascript"> 7var src = [ 8 'https://*******/file/mp3/001.mp3', 9 'https://*******/file/mp3/002.mp3', 10 'https://*******/file/mp3/003.mp3', 11 ]; 12 var randmize_wrapper = function () { 13 var rand = Math.floor( Math.random() * src.length ); 14 return rand; 15 } 16 var currentRand = 0; 17 document.addEventListener("DOMContentLoaded", function(){ 18 var rand = randmize_wrapper(); 19 document.getElementById("srcElement").setAttribute('src', src[rand]); 20 currentRand = rand; 21 var audio_elm = document.getElementById("audioElement"); 22 audio_elm.load(); 23 audio_elm.play(); 24 }); 25 var audio_elm = document.getElementById("audioElement"); 26 audio_elm.addEventListener('ended', function(){ 27 var rand = randmize_wrapper(); 28 while ( currentRand == rand ) { 29 rand = randmize_wrapper(); 30 } 31 currentRand = rand; 32 document.getElementById("srcElement").setAttribute('src', src[rand]); 33 audio_elm.load(); 34 }); 35</script>
今回のコード(正常動作しない)
HTML
1<div id="audiowrap"> 2 <audio id="audioElement" controls> 3 <source id="srcElement" src="" type="audio/mp3"> 4 </audio> 5</div> 6<script type="text/javascript" src="https://*******/file/js/play.js"> 7</script>
Javascript
1var src = [ 2 'https://*******/file/mp3/001.mp3', 3 'https://*******/file/mp3/002.mp3', 4 'https://*******/file/mp3/003.mp3', 5 ]; 6 var randmize_wrapper = function () { 7 var rand = Math.floor( Math.random() * src.length ); 8 return rand; 9 } 10 var currentRand = 0; 11 document.addEventListener("DOMContentLoaded", function(){ 12 var rand = randmize_wrapper(); 13 document.getElementById("srcElement").setAttribute('src', src[rand]); 14 currentRand = rand; 15 var audio_elm = document.getElementById("audioElement"); 16 audio_elm.load(); 17 audio_elm.play(); 18 }); 19 var audio_elm = document.getElementById("audioElement"); 20 audio_elm.addEventListener('ended', function(){ 21 var rand = randmize_wrapper(); 22 while ( currentRand == rand ) { 23 rand = randmize_wrapper(); 24 } 25 currentRand = rand; 26 document.getElementById("srcElement").setAttribute('src', src[rand]); 27 audio_elm.load(); 28 });
補足情報
ブラウザ:GoogleChrome
※ブラウザの仕様を考え、IEでも行いましたが、結果は同じでした。
回答2件
あなたの回答
tips
プレビュー