前提・実現したいこと
JavaScriptで音楽を再生する動作を作成しています。
具体的に言うと、
6つある音楽(a,b,c,d,e,f)を
順番に(a-b-c-d-e-fの順で)
ループ再生で、
最初は6つの音楽のいずれかをランダムで選択したもの
を流したいです。
※例
aが最初で続いてb-c-d-e-f-a-b-c-d-e-f....
cが最初で続いてd-e-f-a-b-c-d-e-f-a-b....
などのようにしたいです。
発生している問題・エラーメッセージ
ページを開いても再生されないというのが現状です。
何が問題であるのか、どのように直したらいいのかを教えていただけないでしょうか。
ソースコード
いくつかのサイトを参考に作成したのが下記のコードになります。
JS
1 var src = [ 2 'a.mp3', 3 'b.mp3', 4 'c.mp3', 5 'd.mp3', 6 'e.mp3', 7 'f.mp3', 8 ]; 9 // DOM要素の読み込みが終了してから実行 10 document.addEventListener("DOMContentLoaded", function(){ 11 var rand = Math.floor( Math.random() * src.length ); // 0以上ファイル数未満の整数値の乱数を生成 12 // id="audiowrap"の要素にaudio要素を書き出す 13 document.getElementById("audiowrap").innerHTML = '<audio autoplay>' + 14 '<source src="' + src[rand] + '" type="audio/mp3">' + 15 '</audio>'; 16 }); 17 var a = new Audio("a.mp3"); 18 var b = new Audio("b.mp3"); 19 var c = new Audio("c.mp3"); 20 var d = new Audio("d.mp3"); 21 var e = new Audio("e.mp3"); 22 var f = new Audio("f.mp3"); 23 // aのendedを検知するための処理 24 a.addEventListener("ended", function(e) { 25 // bの再生開始 26 b.play(); 27 }); 28 29 // bのendedを検知するための処理 30 b.addEventListener("ended", function(e) { 31 // cの再生開始 32 c.play(); 33 }); 34 35 // cのendedを検知するための処理 36 c.addEventListener("ended", function(e) { 37 // bの再生開始 38 d.play(); 39 }); 40 41 // dのendedを検知するための処理 42 d.addEventListener("ended", function(e) { 43 // cの再生開始 44 d.play(); 45 }); 46 47 // eのendedを検知するための処理 48 e.addEventListener("ended", function(e) { 49 // bの再生開始 50 f.play(); 51 }); 52 53 // fのendedを検知するための処理 54 f.addEventListener("ended", function(e) { 55 // cの再生開始 56 a.play(); 57 });
回答2件
あなたの回答
tips
プレビュー