Tell us what’s happening:
Test 9 fails, which checks that keyboard presses result in sounds being played. Keyboard presses trigger the sound when I test, so I assume the test is looking for something specific with the event.
This works locally, including when I rapidly press keys.
Also for bonus: how can I check test conditions myself so that I can resolve these issues in the future?
Your code so far
<!-- file: index.html -->
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Drum Machine</title>
</head>
<body>
<div id="drum-machine">
<div id="pad-bank">
<p id="display"></p>
<button id="Q" class="drum-pad">
Q
<audio id="Q" class="clip" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-1.mp3" data-name="Heater 1"></audio>
</button>
<button id="W" class="drum-pad">
W
<audio id="W" class="clip" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-2.mp3" data-name="Heater 2"></audio>
</button>
<button id="E" class="drum-pad">
E
<audio id="E" class="clip" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-3.mp3" data-name="Heater 3"></audio>
</button>
<button id="A" class="drum-pad">
A
<audio id="A" class="clip" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-4_1.mp3" data-name="Heater 4"></audio>
</button>
<button id="S" class="drum-pad">
S
<audio id="S" class="clip" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-6.mp3" data-name="Clap"></audio>
</button>
<button id="D" class="drum-pad">
D
<audio id="D" class="clip" src="https://cdn.freecodecamp.org/curriculum/drum/Dsc_Oh.mp3" data-name="Open-HH"></audio>
</button>
<button id="Z" class="drum-pad">
Z
<audio id="Z" class="clip" src="https://cdn.freecodecamp.org/curriculum/drum/Kick_n_Hat.mp3" data-name="Kick-n'-Hat"></audio>
</button>
<button id="X" class="drum-pad">
X
<audio id="X" class="clip" src="https://cdn.freecodecamp.org/curriculum/drum/RP4_KICK_1.mp3" data-name="Kick"></audio>
</button>
<button id="C" class="drum-pad">
C
<audio id="C" class="clip" src="https://cdn.freecodecamp.org/curriculum/drum/Cev_H2.mp3" data-name="Closed-HH"></audio>
</button>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
/* file: script.js */
// grab display so we don't need to query it over and over
const display = document.getElementById("display");
const buttons = document.querySelectorAll(".drum-pad");
buttons.forEach(currentValue =>
currentValue.addEventListener("click", () => triggerSound(currentValue.id))
)
addEventListener("keydown", event => triggerSound(event.key));
let currentSound = null;
function triggerSound(key) {
const upperCaseKey = key.toUpperCase();
const audioToPlay = document.querySelector("audio#" + upperCaseKey);
if (audioToPlay !== null) {
display.innerText = audioToPlay.dataset.name;
if (currentSound !== null) {
currentSound.pause();
}
audioToPlay.currentTime = 0;
audioToPlay.play();
currentSound = audioToPlay;
}
}
/* file: styles.css */
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36
Challenge Information:
Build a Drum Machine - Build a Drum Machine