Tell us what’s happening:
My program runs as expected, but its failing this test:
9. When you press one of the keys Q, W, E, A, S, D, Z, X, C on your keyboard, the corresponding audio element should play the corresponding sound.
When I press down on the corresponding key, it does play the correct audio so I’m not sure where I’m going wrong with this one. Please help! Thanks! ![]()
Your code so far
<!-- file: index.html -->
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Drum Machine</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="drum-machine">
<div id="pad-bank">
<button id="heater-1" class="drum-pad" type="button">Q
<audio id="Q" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-1.mp3" class="clip"></audio>
</button>
<button id="heater-2" class="drum-pad" type="button">W
<audio id="W" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-2.mp3" class="clip">
</button>
<button id="heater-3" class="drum-pad" type="button">E
<audio id="E" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-3.mp3" class="clip">
</button>
<button id="heater-4" class="drum-pad" type="button">A
<audio id="A" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-4_1.mp3" class="clip">
</button>
<button id="heater-6" class="drum-pad" type="button">S
<audio id="S" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-6.mp3" class="clip">
</button>
<button id="dsc-oh" class="drum-pad" type="button">D
<audio id="D" src="https://cdn.freecodecamp.org/curriculum/drum/Dsc_Oh.mp3" class="clip">
</button>
<button id="kick-n-hat" class="drum-pad" type="button">Z
<audio id="Z" src="https://cdn.freecodecamp.org/curriculum/drum/Kick_n_Hat.mp3" class="clip">
</button>
<button id="rp4-kick" class="drum-pad" type="button">X
<audio id="X" src="https://cdn.freecodecamp.org/curriculum/drum/RP4_KICK_1.mp3" class="clip">
</button>
<button id="cev-h2" class="drum-pad" type="button">C
<audio id="C" src="https://cdn.freecodecamp.org/curriculum/drum/Cev_H2.mp3" class="clip">
</button>
</div>
<p id="display"></p>
</div>
<script src="script.js"></script>
</body>
</html>
/* file: styles.css */
body {
background-color: grey;
}
#drum-machine {
margin: auto;
width: 75vw;
height: 75vh;
background-color: black;
}
#pad-bank {
display: flex;
align-items: flex-start;
flex-wrap: wrap;
gap: 5px;
justify-content: space-between;
background-color: black;
width: 95%;
height: 95%;
margin: auto;
position: relative;
top: 2%;
}
#pad-bank button {
width: 30%;
height: 30%;
gap: 3px;
}
p {
background-color: orange;
width: 100%;
height: 25%;
}
/* file: script.js */
const drumPad = document.querySelectorAll(".drum-pad");
const display = document.getElementById("display");
drumPad.forEach((button) => {
button.addEventListener("click", () => {
const audioEl = button.firstElementChild;
playAudio(audioEl);
updateDisplay(button.id);
});
});
const body = document.querySelector("body");
body.addEventListener("keydown", (e) => {
for(let drum of drumPad){
if(e.key.toUpperCase() === drum.innerText){
const audioEl = document.getElementById(drum.innerText);
playAudio(audioEl);
updateDisplay(drum.id);
}
}
});
function updateDisplay(clip){
display.innerText = clip;
}
function playAudio(audioEl) {
audioEl.play();
}
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0
Challenge Information:
Build a Drum Machine - Build a Drum Machine