所以我有多个具有不同 data-key
属性的div
<div data-key="65" class="key">
<kbd>A</kbd>
<span class="sound">clap</span>
</div>
我有 data-key
作为属性的多个音频
<audio data-key="65" src="sounds/clap.wav"></audio>
现在在 <script>
部分使用vanilla JS,我想用 data-key
播放声音,就像点击div一样 . 例如,如果我用 data-key="65"
点击div,它应该用 data-key="65"
播放音频 .
我有一个 keyDown
eventListener,但我也希望点击它来实现 .
我试过了
document.addEventListener('click', function(e){
console.log(e);
});
但无法拾取任何导致div属性的东西 .
2 回答
选择所有div具有
data-key
属性和.key
使用.querySelectorAll()并循环它们 .在循环中使用.addEventListener()添加
click
事件处理程序在事件处理函数中,使用dataset属性获取
data-key
的值 .使用属性相等选择器选择具有特定
data-key
值的音频标签 .播放音频.play()
一种方法是将事件侦听器附加到每个键 . 另一种方法是将侦听器附加到父节点(最好不是
document
)并使用事件传播来捕获事件,因为它们冒泡DOM . 单击的元素将位于事件目标属性中 .在这里,我将密钥包装在包含监听器的密钥组中 .