Tell us what’s happening:
Anyone know why 7 and 9 won’t work with my code? It works in codepen! 7. When you click on a .drum-pad element, the audio clip contained in its child audio element should be triggered.
9. When a .drum-pad is triggered, you should display a string describing the associated audio clip as the inner text of the #display element (each string must be unique).
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="style.css">
</head>
<body>
<div id="drum-machine">
<p id="display">Hit a drum</p>
<div id="pad-bank">
<div class="drum-pad" id="Heater-1">Q
<audio class="clip" id="Q" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-1.mp3"></audio>
</div>
<div class="drum-pad" id="Heater-2">W
<audio class="clip" id="W" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-2.mp3"></audio>
</div>
<div class="drum-pad" id="Heater-3">E
<audio class="clip" id="E" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-3.mp3"></audio>
</div>
<div class="drum-pad" id="Heater-4">A
<audio class="clip" id="A" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-4_1.mp3"></audio>
</div>
<div class="drum-pad" id="Clap">S
<audio class="clip" id="S" src="https://cdn.freecodecamp.org/curriculum/drum/Heater-6.mp3"></audio>
</div>
<div class="drum-pad" id="Open-HH">D
<audio class="clip" id="D" src="https://cdn.freecodecamp.org/curriculum/drum/Dsc_Oh.mp3"></audio>
</div>
<div 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>
</div>
<div class="drum-pad" id="Kick">X
<audio class="clip" id="X" src="https://cdn.freecodecamp.org/curriculum/drum/RP4_Kick_1.mp3"></audio>
</div>
<div class="drum-pad" id="Closed-HH">C
<audio class="clip" id="C" src="https://cdn.freecodecamp.org/curriculum/drum/Cev_H2.mp3"></audio>
</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
/* file: styles.css */
#drum-machine {
max-width: 500px;
margin: 2rem auto;
text-align: center;
background: #222;
color: white;
border-radius: 12px;
box-shadow: 0 0 20px #f39c12;
padding: 1rem;
}
#pad-bank {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1rem;
}
.drum-pad {
background: #333;
padding: 2rem;
border-radius: 8px;
cursor: pointer;
user-select: none;
font-size: 1.5rem;
box-shadow: 0 4px #999;
transition: transform 0.1s;
}
.drum-pad:active {
transform: scale(0.95);
box-shadow: none;
}
#display {
margin-top: 1.5rem;
font-size: 1.2rem;
font-style: italic;
color: #f39c12;
}
/* file: script.js */
document.addEventListener("DOMContentLoaded", ()=>{
const display = document.getElementById("display");
const pads = document.querySelectorAll(".drum-pad");
const playClip = (key) => {
const audio = document.getElementById(key);
if (audio) {
audio.currentTime = 0;
audio.play();
const soundName = audio.parentElement.id;
display.textcontent = $`{soundName}`;
}
};
pads.forEach(pad => {
pad.addEventListener("click", () =>{
playClip(key);
});
});
document.addEventListener("keydown", (e) =>{
const key = e.key.toUpperCase();
if("QWEASDZXC".includes(key)){
playClip(key);
}
});
});
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0
Challenge Information:
Build a Drum Machine - Build a Drum Machine