2013-09-14 1 views
0

Я динамически создаю аудиоконтроллер и пытаюсь показать его на форме с элементами управления. У меня есть div на форме (я пробовал это с div, td, span), и я уверен, что у меня есть его правильный код. Я использую appendChild (аудио). Если я поставлю предупреждение() непосредственно перед завершением функции, управление аудио начнет воспроизведение файла. Как только функция выходит, звуковой проигрыватель останавливается, и я никогда не вижу, чтобы отображалось управление. Что мне не хватает? Кажется очевидным, что аудио-переменная теряет область действия и больше не действует. Но почему я не могу appendChild его в div, td или span? (Я в светлячок, так сво OGG, который играет)appendChild не работает с управлением аудио

Edit - Я полагаю, я должен отметить, что это вызывается из

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(); 

} 

ответ

1

Аудиофайл, который вы изначально создали, теряет область действия, когда функция завершена. Вам нужно будет получить доступ к элементу аудио, находящемуся в DOM.

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

audioElement.load(); 
audioElement.play(); 
+0

К сожалению, я неграмотный. Я не знаю, как интегрировать это с моим кодом. Я использовал (предположительно рабочие) примеры, извлеченные из разных сообщений, которые не были jQuery. Спасибо за предложение. – mseifert

+0

Вам не нужен jQuery. Я обновил свой ответ, поэтому он не использует jQuery. –

+0

Я считаю, что audio.load(); audio.play(); должен быть с новым audioElement var. Тем не менее, управление аудио по-прежнему теряет объем. Я добавил audioElement.controls = true; поэтому теперь я могу увидеть элемент управления до его исчезновения ... – mseifert