我正在尝试在单个html页面上播放多个本地存储的mp3文件。我想在触发onclick
的单独js文件中使用单个JavaScript函数,以播放相邻音频标签中引用的正确文件。每次点击/单击音频只需播放一次。
我尝试使用querySelector
和其他各种技术来查找最近的音频标签,但是它始终默认为页面顶部的音频标签。如何限制querySelect的范围,或者有另一种方法可以做我想要的?我不想为每个音频标签创建一个唯一的ID,因为我正在制作很多这样的页面。
function PlaySound() {
var sound = document.querySelector(".audio");
sound.play()
}
<audio class="audio" src="../../audio/na.mp3" autostart="false"></audio><a onclick="PlaySound()">나</a>
<audio class="audio" src="../../audio/gak.mp3" autostart="false"></audio><a onclick="PlaySound()">각</a>
答案 0 :(得分:0)
首先,您应该使用button
,而不是锚标记。它们是按钮,因为它们仅在页面上执行操作。链接可以带您进入另一个页面。
现在要解决的问题:调用事件侦听器时,例如PlaySound
发生时的onclick
,您可以给它一个this
参数,它是按钮。
现在,您的音频就很容易previousElementSibling
了,这意味着您可以轻松调用audio.play()
。
function play (button) {
console.log('Button:', button.innerText)
const audio = button.previousElementSibling
console.log('Audio', audio)
}
<audio src="1"></audio>
<button onclick="play(this)">1</button>
<audio src="2"></audio>
<button onclick="play(this)">2</button>
答案 1 :(得分:0)
您可以做的是将音频标签保存的信息存储在JavaScript from django.urls import path
from . import views
from django.conf.urls import url
urlpatterns=[
path('',views.BlogsList.as_view(),name='blog-home'),
url(r'^like/$', views.like_post, name='like_post')
]
中,并动态创建音频列表和相应按钮。
array
var audioList = [{
src: "../../audio/na.mp3",
text: "나"
}, {
src: "../../audio/gak.mp3",
text: "각"
}];
var container = document.querySelector("#container");
audioList.forEach(function(audio) {
var audioElem = document.createElement("audio");
var button = document.createElement("button");
audioElem.setAttribute("autostart", false);
audioElem.setAttribute("src", audio.src);
button.textContent = audio.text;
audioElem.className = "audio";
button.addEventListener("click", getButtonListener(audioElem));
container.appendChild(audioElem);
container.appendChild(button);
});
function getButtonListener(audioElem) {
return function() {
audioElem.play();
console.log("Playing:" + audioElem.src);
};
}
或者您可以这样做:
<div id="container"></div>
var audioList = {
"나": "../../audio/na.mp3",
"각": "../../audio/gak.mp3"
};
function openAudio(target){
document.querySelector("audio[src='" + audioList[target.textContent] + "']").play();
console.log("Playing: " + audioList[target.textContent]);
}