0

オーディオ コントロールを動的に作成し、コントロールを含むフォームに表示しようとしています。フォームに div があり (div、td、span で試しました)、ID が正しいと確信しています。私はappendChild(オーディオ)を使用しています。関数が終了する直前に alert() を配置すると、オーディオ コントロールがファイルの再生を開始します。関数が終了するとすぐに、オーディオ プレーヤーが停止し、コントロールが表示されません。私は何が欠けていますか?audio 変数がスコープを失い、有効ではなくなったことは明らかです。しかし、それを div、td、または span に appendChild できないのはなぜですか? (私はFirefoxを使用しているので、再生中のoggです)

編集-これはから呼び出されていることに言及する必要があると思います

HTML:

<a onclick="CreateAudio($oggfile, $id)">Play</a>

JavaScript:

function CreateAudio(oggfile, id)
{ 
var audio = document.createElement('audio');

var source= document.createElement('source');
source.type= 'audio/ogg';
source.src= oggfile;
audio.appendChild(source);

mp3file = oggfile;  // I will fix this to replace ogg extension with mp3
source= document.createElement('source');
source.type= 'audio/mpeg';
source.src= mp3file;
audio.appendChild(source);

var div = document.getElementById(id);
div.appendChild(audio);

audio.load;
audio.play();

}
4

1 に答える 1

1

最初に作成した audio 要素は、関数が終了するとスコープを失います。DOM にある audio 要素にアクセスする必要があります。

audio.setAttribute("id", "myAudioClip")
var div = document.getElementById(id);
div.appendChild(audio);
var audioElement = document.getElementById("myAudioClip");

audioElement.load();
audioElement.play();
于 2013-09-14T05:00:33.943 に答える