2014-01-18 101 views
1

感謝您檢查我的問題。我遇到了阻止音頻元素的絆腳石,我希望得到一些幫助。我用參數動態創建音頻元素,就像這樣。通過ID停止音頻元素

var audio = document.createElement("audio"); 
audio.setAttribute('id', params[0]); 

這工作正常,params [0]是一個用戶參數。例如,我可以提醒audio.id並獲取'backgroundmusic'。和audio.play工程。當我試圖阻止它時,問題就來了。

var audio = document.getElementById(params[0]); 
audio.pause(); 

我認爲這樣會有效,但每次都會返回null。我是一個總的javascript新手,我確定這是一個新手的錯誤,但是我做錯了什麼?

非常感謝您提前。

回答

1

創建音頻元素後,將其附加到dom中的某個元素。

var audioElement = document.createElement('audio'); 
    audioElement.setAttribute('src', 'http://home.tiscali.nl/~jvanderw/malaysia02/sounds/greatargus.mp3'); 
    audioElement.setAttribute('id', "user_id"); 
    audioElement.load() 
$("#audio_div").append(audioElement); 

我創建了一個小提琴,檢查這個http://jsfiddle.net/QG68M/

+0

謝謝你一堆。我甚至沒有注意到實際上找不到任何元素。 – user3152117

0

我已經注意到,你沒有連接音頻對象的DOM /文件。這會導致document.getElementByID無法找到元素。停止播放音頻文件的最簡單方法是保留對您創建的音頻對象的引用。

var audioControl; 

function CreateAudioElement(params) 
{ 
    audioControl = document.createElement("audio"); 
    audioControl.setAttribute('id', params[0]); 
} 

function StopAudioElement() 
{ 
    audioControl.pause(); 
} 
+1

這也是一個很好的解決方案。非常感謝。 – user3152117

+0

@ user3152117請不要忘記註冊並將其標記爲答案。 :) tnx –

+1

我會喜歡,如果我有我自己的聲譽。我簡直就是在這個月剛剛開始JavaScript。 – user3152117