您可能需要針對每個td
內audio
標籤,但至今都沒有唯一的標識符,以幫助該任務。一個小的除了你的代碼可以解決這個...
<td id="A" class="squareA" type="button";>
<audio id="audio-A">
<source src="music/work_it.wav" type="audio/wav">
</audio>
Work It
</td>
現在,您可以通過特定的id
找到每個標記。
但是,如果您只需在audio
標記中允許controls
,用戶將能夠單擊默認瀏覽器播放器並播放該文件,而無需任何其他代碼。
<audio controls>
<source ... etc
</audio>
但是,如果controls
不存在(或設置爲controls="false"
)默認瀏覽器播放器將不會出現。我認爲這是你所追求的,因爲你正在尋找通過點擊事件播放音頻文件。因爲沒有controls
沒有被顯示在瀏覽器點擊,在這種情況下你需要針對表中所有包含他們的td
標籤
音頻標籤id
s爲不一定有幫助,在這一點上。
如果您還沒有這樣做的話添加id
屬性,則音頻表(如:「音表」),那麼你可以.addEventListener()
與一個叫頁面加載功能,每個TD-盒;像...
function addEvents2Table() {
/* presuming the table has an
id of 'audio-table' here */
var audioTable = document.getElementById('audio-table');
/* td tag collection */
var tdTags = audioTable.getElementsByTagName('td');
var len = tdTags.length;
/* add a 'playAudio' function call
to each td when clicked */
while(len--) {
tdTags[len].addEventListener(
'click', playAudio, false
);
}
}
/* call 'addEvents2Table()' on page load */
window.onload = function() {
addEvents2Table();
};
現在,當表中的一個td
被點擊playAudio()
功能將閃光。現在所需要的就是這個功能。這是關注html標記真正幫助的地方。
在上面的第一個代碼示例中,我將id="audio-A"
添加到td-tag中的音頻標籤。 'A'(或'B'或'C'等)現在可以非常方便地使用。
function playAudio(event) {
/* get the 'id' of the clicked element */
var tagID = event.target.id;
/* add it to 'audio-' */
var audioID = 'audio-' + tagID;
/* target the corresponding audio tag */
var audioTAG = document.getElementById(audioID);
/* play the file */
audioTAG.play();
}
還有其他的事情需要考慮。你想讓瀏覽器同時播放音頻文件嗎?你希望用戶能夠停止音頻剪輯嗎?現在我們已經可以快速連續點擊所有框,瀏覽器會嘗試播放所有音頻文件。另外,如果您在播放音頻文件時單擊一個框,則會引發一些問題。
不過,這應該足以讓你開始。請評論,如果你需要進一步澄清。
與此同時,這裏的MDN's audio-tag page作爲參考。
對不起,作爲一個例子(對於16的1)我使用的表格HTML代碼是