JavaScriptで音楽を切り替える方法について解説(innerHTMLを利用)

HOME
更新日:2017.03.02
HOMEJavaScript入門 > 音楽を切り替える2

音楽を切り替える2

前のページではbgsoundタグを使って音楽を切り替える方法を見ました。 同じ方法をembedタグでも使えそうですが、うまくいきません。 今回はembedタグをinnerHTMLでダイレクトに書き換えて、 音楽を切り替える方法について見ていきたいと思います。

embedタグをinnerHTMLで書き換える

以下のタグとスクリプトを、HTMLのbody内に書き込んでみてください。 今回も01~03と名づけたmp3ファイルを使用していますので、 HTMLファイルと同じフォルダに準備してください。

<div id="music">
<embed src="01.mp3" autostart="false">
</div>

<form>
<input type="button" value="音楽1" onclick="melody(0)" />
<input type="button" value="音楽2" onclick="melody(1)" />
<input type="button" value="音楽3" onclick="melody(2)" />
</form>

<script>

function melody(num)
{
 var arrMP3 = new Array("01.mp3","02.mp3","03.mp3");
 var emb = '<embed # autostart="true">';
 emb=emb.replace('#','src="'+arrMP3[num]+'"');

 document.getElementById("music").innerHTML = emb;
}

</script>

サンプル(音量に注意してください)

上記スクリプトの解説

では上記のスクリプトを詳しく見ていきましょう。

embedタグ

<div id="music">
<embed src="01.mp3" autostart="false">
</div>

今回はembedタグを根こそぎ書き換えるので、embedタグ全体をdivタグで囲んでいます。 そしてdivタグにid名「music」を指定しました。

embedタグのsrc属性値にダミーのmp3ファイルを指定すると、音楽ファイルと認識さずプレーヤーが表示されません。 それで今回は01.mp3を指定し、 自動再生しないようにautostartの値を「false」とします(ブラウザによっては再生してしまうものもあります)。

必要ならembedタグにwidth属性やheight属性、loop属性を設定して下さい。 height属性値を0にしてプレーヤーを表示しなければ、前項のbgsoundタグと同じような感じにできます。

フォーム

<form>
<input type="button" value="音楽1" onclick="melody(0)" />
<input type="button" value="音楽2" onclick="melody(1)" />
<input type="button" value="音楽3" onclick="melody(2)" />
</form>

前項と同様3つボタンを設置し、関数melody()を呼び出すようにしています。 引数で曲を振り分けています。

関数melody()

function melody(num){…}

こちらも前項と同じです。引数numを設け、曲を選別できるようにしています。

var arrMP3 = new Array("01.mp3","02.mp3","03.mp3");

mp3ファイルのパスを配列arrMP3に格納していきます。

var emb = '<embed # autostart="true">';
emb=emb.replace('#','src="'+arrMP3[num]+'"');

次に、変数embを宣言して、embedタグの骨格を登録します。 src属性が入る部分に「#」を入れています。 また今回は自動再生させるため、autostart属性値は「true」です。 (タグ内の属性にダブルクォーテーションを使っているので、 タグ全体を囲むのにシングルクォーテーションを利用しています)。

次の行でreplace()を利用して「#」を検索し、src属性と置換します。 置換文字は「src="」とmp3ファイルのパスと「"」を結合させたものです。 右辺arrMP3[num]は前項と同様です。引数numの数値によって該当するmp3ファイルが変わります(arrMP3[1]なら02.mp3)。

そして、置換された文字列(embedタグ)を再び変数embに格納します。

document.getElementById("music").innerHTML = emb;

最後に、document.getElementByIdでid名「music」のdivタグを取得し、 innerHTMLを使って新たなsrc属性値が記入されたembedタグに書き換えます。


このようにして少し強引ですが、embedタグでも音楽の切り替えを行うことができます。 しかしHTML5では新たにaudioタグというものができました。 これを使った音楽の切り替えについて、次のページで見てみたいと思います。