-2
I am developing a page that by pressing some keyboard keys, we trigger some sounds, like beats, claps and etc.
This line gives play
in the audio when firing an event:
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
But I didn’t understand why it has a dollar sign, and I also wanted to know if there is any easier and/or clearer and didactic way. For example, you can get audio from the attribute data-key
without it being ${e.keyCode}
?
window.addEventListener('keydown',function (e) {
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
if (!audio) {
return false;
} else {
audio.play();
}
});
<div class="keys">
<div data-key="65" class="key">
<kbd>A</kbd>
<span class="sound">clap</span>
</div>
<div data-key="83" class="key">
<kbd>S</kbd>
<span class="sound">hithat</span>
</div>
<div data-key="68" class="key">
<kbd>D</kbd>
<span class="sound">kick</span>
</div>
<div data-key="70" class="key">
<kbd>F</kbd>
<span class="sound">openhat</span>
</div>
<div data-key="71" class="key">
<kbd>G</kbd>
<span class="sound">boom</span>
</div>
<div data-key="72" class="key">
<kbd>H</kbd>
<span class="sound">ride</span>
</div>
<div data-key="74" class="key">
<kbd>J</kbd>
<span class="sound">snare</span>
</div>
<div data-key="75" class="key">
<kbd>K</kbd>
<span class="sound">tom</span>
</div>
<div data-key="76" class="key">
<kbd>L</kbd>
<span class="sound">tink</span>
</div>
</div>
<audio data-key="65" src="sounds/clap.wav"></audio>
<audio data-key="83" src="sounds/hihat.wav"></audio>
<audio data-key="68" src="sounds/kick.wav"></audio>
<audio data-key="70" src="sounds/openhat.wav"></audio>
<audio data-key="71" src="sounds/boom.wav"></audio>
<audio data-key="72" src="sounds/ride.wav"></audio>
<audio data-key="74" src="sounds/snare.wav"></audio>
<audio data-key="75" src="sounds/tom.wav"></audio>
<audio data-key="76" src="sounds/tink.wav"></audio>
the dollar "${variables}" refers to the strings template, nothing more is than embedded expressions, however, only between crases ` (does not work in single quotes ' and double quotes ")
– gleisin-dev
It is worth noting that the event
KeyboardEvent.keyCode
was deprecated! see alternatives like:KeyboardEvent.key
andKeyboardEvent.code
both have support in most browsers (any questions please check support in caniuse with.)– gleisin-dev