Tell us what’s happening:
Hi, the code works but cannot pass the 8th test. I have no clue what’s the desired method.
Failed: 8. 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.
Your code so far
<!-- file: index.html -->
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Drum Machine</title>
<link href="styles.css" rel="stylesheet">
</head>
<body>
<div id="drum-machine">
<div id="pad-bank">
<button class="drum-pad" id="Heater-1">Q
<audio class="clip" id="Q" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-1.mp3">
</audio>
</button>
<button class="drum-pad" id="Heater-2">W
<audio class="clip" id="W" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-2.mp3">
</audio>
</button>
<button class="drum-pad" id="Heater-3">E
<audio class="clip" id="E" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-3.mp3">
</audio>
</button>
<button class="drum-pad" id="Heater-4">A
<audio class="clip" id="A" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-4_1.mp3">
</audio>
</button>
<button class="drum-pad" id="Clap">S
<audio class="clip" id="S" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-6.mp3">
</audio>
</button>
<button class="drum-pad" id="Open-HH">D
<audio class="clip" id="D" src="https://cdn.freecodecamp.org/curriculum/drum/Dsc_Oh.mp3">
</audio>
</button>
<button class="drum-pad" id="Kick-n'-Hat">Z
<audio class="clip" id="Z" src="https://cdn.freecodecamp.org/curriculum/drum/Kick_n_Hat.mp3">
</audio>
</button>
<button class="drum-pad" id="Kick">X
<audio class="clip" id="X" src="https://cdn.freecodecamp.org/curriculum/drum/RP4_KICK_1.mp3">
</audio>
</button>
<button class="drum-pad" id="Closed-HH">C
<audio class="clip" id="C" src="https://cdn.freecodecamp.org/curriculum/drum/Cev_H2.mp3">
</audio>
</button>
</div>
<p id="display">display</p>
</div>
<script src="script.js"></script>
</body>
</html>
/* file: styles.css */
* {
box-sizing: border-box;
}
html {
background-color: #32012F;
}
#drum-machine {
margin: 100px auto;
text-align: center;
background-color: #524C42;
width: 400px;
height: 500px;
border: 2px solid #E2DFD0;
border-radius: 10px;
}
#pad-bank {
margin: 10px auto 0px;
padding-top: 50px;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
width: 300px;
height: 300px;
gap: 10px;
}
#pad-bank button {
background-color: #F97300;
border: none;
border-radius: 10px;
}
#display {
background-color: #E2DFD0;
width: 50%;
padding: 10px;
text-align: center;
margin: 30px auto;
}
.active {
background-color: yellow !important;
}
/* file: script.js */
/*
const pads = document.querySelectorAll(".drum-pad");
const clips = Array.from(document.querySelectorAll(".drum-pad .clip"));
pads.forEach((pad) => {
pad.addEventListener("click", () => {
const audio = new Audio;
audio.src = clips.find((clip) => pad.innerText == clip.id).src;
audio.play();
});
});
*/
const pads = document.querySelectorAll(".drum-pad");
const display = document.getElementById("display");
pads.forEach((pad) => {
pad.addEventListener("click", () => {
document.querySelector(`.drum-pad #${pad.innerText}`).play();
display.innerText = pad.id;
pad.classList.toggle("active")
setTimeout(() => {
pad.classList.toggle("active");
}, 100);
});
});
const body = document.querySelector("body");
const padsArr = Array.from(pads);
body.addEventListener("keydown", (e) => {
/*
try {
document.querySelector(`.drum-pad #${e.key.toUpperCase()}`).play();
}
catch (TypeError) {
return;
}
*/
const userKey = e.key.toUpperCase();
const regex = /^[QWEASDZXC]$/;
if (regex.test(userKey)) {
console.log(userKey);
padsArr.find((pad) => pad.innerText === userKey).click();
}
return;
});
Your browser information:
User Agent is: Mozilla/5.0 (X11; Linux x86_64; rv:139.0) Gecko/20100101 Firefox/139.0
Challenge Information:
Build a Drum Machine - Build a Drum Machine
https://www.freecodecamp.org/learn/full-stack-developer/lab-drum-machine/build-drum-machine