2011-06-16 66 views
2

我想弄清楚如何觸發從javascript播放音頻。我得到了一些HTML,看起來像:使用Javascript播放audioelement(html5)

<div class='audio' >foo 
<audio preload='auto' controls src='test.wav'> 
<b>Your browser does not support the audio tag.</b> 
</audio> 
</div> 

我試圖與觸發它:

$(document).ready(function() { 
    $('.audio').each(function(){ 
     var audio = $(this).find('audio').get(); 
     $(this).click(function(){ 
      audio.volume = 100; 
      alert('1 '+audio); 
      audio.play(); 
      alert('2'); 
     }); 
    }); 
}); 

警報( '1' +音頻);按預期工作並將音頻報告爲HTMLAudioElement。然而警報('2');沒有被調用,因爲我得到的錯誤'audio.play'不是一個函數。我能做些什麼來解決這個問題?

+1

你的意思是說你得到一個錯誤,指出'audio.play'不是函數嗎?我非常確定這是正確的,'alert.play'不是一個函數,除非你專門用play方法定義了一個新的alert對象。 – kinakuta 2011-06-16 02:41:04

+0

從Firefox複製和粘貼錯誤控制檯: 錯誤:audio.play不是一個功能 - 當然是一個很好的問題,但遺憾的是這是真的oO – 2011-06-16 02:45:18

+1

這更有意義 - 我認爲這就是你的意思,但只是想確保那裏在你的實際代碼中不是一個錯字。 – kinakuta 2011-06-16 02:47:46

回答

7

你的代碼看起來很完美。你得到的錯誤是「alert.play」不是一個函數或「audio.play」不是一個函數。

我覺得

var audio = $(this).find('audio').get(); 

返回數組試試這個

var audio = $(this).find('audio').get(0); 
+0

謝謝:D--我現在可以用沉重的東西打我自己,但是讓這個東西最終運行是一種很好的感覺。 – 2011-06-16 03:04:33

4

控制音頻不jQuery的使用,如果你給音頻標籤的ID只是JavaScript是更容易:

<audio id="myAudioTagID" type="audio/mpeg" src="sound.mp3"></audio> 

然後您可以簡單地獲取元素並應用.pause(),.start(),stop():

var audio = document.getElementById("myAudioTagID"); 
audio.play(); 
audio.pause(); 
audio.stop();