【发布时间】:2022-01-18 20:44:42
【问题描述】:
问题如下:我创建了一个单独的JS文件,我想在其中迭代属于某个类audioz的元素。在我的 JS 代码的第二行中,我在item 上使用了addEventListener,但是代码似乎不适用于item,除非我输入document,但结果仍然存在缺陷。我在迭代中做错了什么?
JS:
document.querySelectorAll('.audioz').forEach(item => {
item.addEventListener('keydown', function(e) {
const ss = document.querySelector(`audio[data-key="${e.keyCode}"]`);
console.log(ss);
ss.play();
})
})
HTML:
<audio class="audioz" data-key="65" src="sounds/clap.wav"></audio>
<audio class="audioz" data-key="83" src="sounds/hihat.wav"></audio>
<audio class="audioz" data-key="68" src="sounds/kick.wav"></audio>
<audio class="audioz" data-key="70" src="sounds/openhat.wav"></audio>
<audio class="audioz" data-key="71" src="sounds/boom.wav"></audio>
<audio class="audioz" data-key="72" src="sounds/ride.wav"></audio>
<audio class="audioz" data-key="74" src="sounds/snare.wav"></audio>
<audio class="audioz" data-key="75" src="sounds/tom.wav"></audio>
<audio class="audioz" data-key="76" src="sounds/tink.wav"></audio>
【问题讨论】:
-
audio标签已隐藏。你不能对其执行keydown事件。 -
试着一步一步分解。您正在查询某个类的所有元素。对于每个结果,您正在创建一个侦听器来控制台仅记录另一个查询的结果。内部循环是否符合您的预期?
标签: javascript foreach jquery-selectors addeventlistener