使用 keydown 播放音频

Playing audio with keydown

所以我无法使这段代码工作。应该发生的是,只要我按下与音频对应的键,音频文件就会播放。但是由于某种原因,每当我按下该键时,都没有任何反应。请帮忙?

window.addEventListener("keydown", function (ev)
{
    const audio = document.querySelector("audio[data-key='${ev.keyCode}']");
    if (!audio) return;
    audio.play();
});
<body>
<div class="container">
    <div data-key="65" class="key">
        <kbd>A</kbd>
        <span>CLAP</span>
    </div
    ><div data-key="83" class="key">
    <kbd>S</kbd>
    <span>HIHAT</span>
</div
><div data-key="68" class="key">
    <kbd>D</kbd>
    <span>KICK</span>
</div
><div data-key="70" class="key">
    <kbd>F</kbd>
    <span>OPENHAT</span>
</div
><div data-key="71" class="key">
    <kbd>G</kbd>
    <span>BOOM</span>
</div
><div data-key="72" class="key">
    <kbd>H</kbd>
    <span>RIDE</span>
</div
><div data-key="74" class="key">
    <kbd>J</kbd>
    <span>SNARE</span>
</div
><div data-key="75" class="key">
    <kbd>K</kbd>
    <span>TOM</span>
</div
><div data-key="76" class="key">
    <kbd>L</kbd>
    <span>TINK</span>
</div>
    <audio data-key="65" src="audio/clap.wav"></audio>
    <audio data-key="83" src="audio/hihat.wav"></audio>
    <audio data-key="68" src="audio/kick.wav"></audio>
    <audio data-key="70" src="audio/openhat.wav"></audio>
    <audio data-key="71" src="audio/boom.wav"></audio>
    <audio data-key="72" src="audio/ride.wav"></audio>
    <audio data-key="74" src="audio/snare.wav"></audio>
    <audio data-key="75" src="audio/tom.wav"></audio>
    <audio data-key="76" src="audio/tink.wav"></audio>
</div>

<!-- Main Script -->
<script src="js/script.js"></script>
</body>

我的方法可能完全错误,如果是这样的话,我需要做什么才能让它发挥作用?

您的问题是您的查询选择器:

const audio = document.querySelector("audio[data-key='${ev.keyCode}']")

您正在尝试使用变量替换,但这仅在使用反引号 (``) 而不是双引号 ("") 时有效。在双引号中,它将被视为普通文本(即,它等于 audio[data-key='${ev.keyCode}'])。

切换到反引号,应该就好了:

const audio = document.querySelector(`audio[data-key='${ev.keyCode}']`)

这将解析为:audio[data-key='65']