多个音频标签不能很好地协同工作

时间:2011-12-18 22:20:35

标签: javascript html5 audio

我正在尝试为我的项目编写音板网站,我希望能够点击<a>标记并让它将音频播放到某个<audio>标记。截至目前,我正在使用我在SO上找到的代码:

<a onclick="this.firstChild.play()"><audio src="1.aif"></audio>1</a>

虽然这在大多数情况下有效,但在iOS上使用它时,如果单击“1”而不是a,它将选择要播放的其他元素(我在页面上有多个元素)。我的想法是,我应该拥有它,以便当您点击<a>时,它会通过课程播放某个<audio>剪辑,

<a onclick="(.1).play()"><audio class="1" src="1.aif"></audio>1</a>

我不确定这是否是最好的方法,如果是,那么调用类而不是firstChild的语法是什么。任何指导将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您正在为元素提供单独的类名,那就是id的用途。 (类更适合应用于多个元素。)所以可能类似于:

<a onclick="document.getElementById('a1').play()"><audio id="a1" src="1.aif"></audio>1</a>

话虽如此,按类获取元素的方法是使用.getElementsByClassName() - 注意它返回元素,复数,作为NodeList,所以即使你知道只有一个元素与给定的类你有允许:

<a onclick="document.getElementsByClassName('1')[0].play()"><audio class="1" src="1.aif"></audio>1</a>

请注意,如Quirksmode compatibility tables所示,并非所有浏览器都支持.getElementsByClassName()

(您也可以使用document.querySelectorAll(),但旧浏览器也不支持。)