使用Javascript播放audioelement(html5)
问题描述:
我想弄清楚如何触发从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'不是一个函数。我能做些什么来解决这个问题?
答
你的代码看起来很完美。你得到的错误是“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
答
控制音频不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();
你的意思是说你得到一个错误,指出'audio.play'不是函数吗?我非常确定这是正确的,'alert.play'不是一个函数,除非你专门用play方法定义了一个新的alert对象。 – kinakuta 2011-06-16 02:41:04
从Firefox复制和粘贴错误控制台: 错误:audio.play不是一个功能 - 当然是一个很好的问题,但遗憾的是这是真的oO – 2011-06-16 02:45:18
这更有意义 - 我认为这就是你的意思,但只是想确保那里在你的实际代码中不是一个错字。 – kinakuta 2011-06-16 02:47:46