Javascript appendChild不使用音频控制

Javascript appendChild不使用音频控制,javascript,audio,appendchild,Javascript,Audio,Appendchild,我正在动态创建一个音频控件,并尝试在带有控件的窗体上显示它。我在表单上有div(我用div、td、span试过了),我确信我的id是正确的。我正在使用appendChild(音频)。如果我在函数结束前放置一个alert(),音频控件将开始播放该文件。一旦功能退出,音频播放器就会停止,并且我从未看到显示的控件。我错过了什么?很明显,音频变量失去了作用域,不再有效。但为什么我不能将其附加到我的div、td或span?(我在firefox中,所以正在播放的是ogg) 编辑-我想我应该提到这是从 HTM

我正在动态创建一个音频控件,并尝试在带有控件的窗体上显示它。我在表单上有div(我用div、td、span试过了),我确信我的id是正确的。我正在使用appendChild(音频)。如果我在函数结束前放置一个alert(),音频控件将开始播放该文件。一旦功能退出,音频播放器就会停止,并且我从未看到显示的控件。我错过了什么?很明显,音频变量失去了作用域,不再有效。但为什么我不能将其附加到我的div、td或span?(我在firefox中,所以正在播放的是ogg)

编辑-我想我应该提到这是从

HTML:


函数完成后,最初创建的音频元素将失去作用域。您需要访问DOM中的音频元素

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

audioElement.load();
audioElement.play();

不幸的是,我是jQuery文盲。我不知道如何将其与我的代码集成。我使用的是从不同帖子中提取的(据说是有效的)示例,这些帖子不是jQuery。谢谢你的建议。你不需要jQuery。我已经更新了我的答案,所以它不使用jQuery;音频播放();应使用新的audioElement变量。但是,音频控件仍然失去作用域。我添加了audioElement.controls=true;所以我现在可以在控件消失之前看到它…我将代码简化为基本代码,因为我认为它应该可以工作。瞧,音频控制并没有失去作用域。臭虫在别处。我会在找到它时更新。
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();

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

audioElement.load();
audioElement.play();