2011-06-16 9 views
2

JavaScriptからオーディオを再生する方法を理解しようとしています。私は次のようになり、いくつかのHTMLました:JavaScriptを使用してオーディオ要素を再生する(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」は機能ではないというエラーが表示されましたか?あなたがplayメソッドで新しい警告オブジェクトを明確に定義していない限り、 'alert.play'は関数ではないということは間違いありません。 – kinakuta

+0

コピー&FirefoxのErrorconsoleから貼り付けます。 エラー:audio.playが関数 ではない - 確かに聞いて良い点、しかし悲しいことに、それはより多くの意味を成して真のオブジェクト指向 –

+1

だ - 私はそれはあなたが何を意味するかだと仮定が、ちょうどそこに確かになりたかったです実際のコードでは誤字ではありませんでした。 – kinakuta

答えて

7

あなたのコードは完璧に見えます。あなたが得ているエラーは、 "alert.play"は関数ではないか、 "audio.play"は関数ではありません。あなたは、オーディオタグにIDを与える場合、私は

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

は、配列がこの

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

ありがとうございました:D - 私は今重いものを打つことができましたが、最終的にそのことを実行するのは良い気分です。 –

4

だけではJavaScriptを使用してjQueryのせずにオーディオをコントロールしようと返すと思います

はさらに簡単です:

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

あなたは単に要素を取得し、.pause()、.start()、stop()を適用することができます:

var audio = document.getElementById("myAudioTagID"); 
audio.play(); 
audio.pause(); 
audio.stop(); 
関連する問題