Skip to content

Commit 06c0722

Browse files
committed
Finish practice exercise wesbos#1 for WesBos - DOM Manipulation & Events - The Odin Project
1 parent b147ab2 commit 06c0722

File tree

1 file changed

+35
-18
lines changed

1 file changed

+35
-18
lines changed

01 - JavaScript Drum Kit/index-START.html

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,55 +10,72 @@
1010

1111

1212
<div class="keys">
13-
<div data-key="65" class="key">
13+
<div data-key="KeyA" class="key">
1414
<kbd>A</kbd>
1515
<span class="sound">clap</span>
1616
</div>
17-
<div data-key="83" class="key">
17+
<div data-key="KeyS" class="key">
1818
<kbd>S</kbd>
1919
<span class="sound">hihat</span>
2020
</div>
21-
<div data-key="68" class="key">
21+
<div data-key="KeyD" class="key">
2222
<kbd>D</kbd>
2323
<span class="sound">kick</span>
2424
</div>
25-
<div data-key="70" class="key">
25+
<div data-key="KeyF" class="key">
2626
<kbd>F</kbd>
2727
<span class="sound">openhat</span>
2828
</div>
29-
<div data-key="71" class="key">
29+
<div data-key="KeyG" class="key">
3030
<kbd>G</kbd>
3131
<span class="sound">boom</span>
3232
</div>
33-
<div data-key="72" class="key">
33+
<div data-key="KeyH" class="key">
3434
<kbd>H</kbd>
3535
<span class="sound">ride</span>
3636
</div>
37-
<div data-key="74" class="key">
37+
<div data-key="KeyJ" class="key">
3838
<kbd>J</kbd>
3939
<span class="sound">snare</span>
4040
</div>
41-
<div data-key="75" class="key">
41+
<div data-key="KeyK" class="key">
4242
<kbd>K</kbd>
4343
<span class="sound">tom</span>
4444
</div>
45-
<div data-key="76" class="key">
45+
<div data-key="KeyL" class="key">
4646
<kbd>L</kbd>
4747
<span class="sound">tink</span>
4848
</div>
4949
</div>
5050

51-
<audio data-key="65" src="sounds/clap.wav"></audio>
52-
<audio data-key="83" src="sounds/hihat.wav"></audio>
53-
<audio data-key="68" src="sounds/kick.wav"></audio>
54-
<audio data-key="70" src="sounds/openhat.wav"></audio>
55-
<audio data-key="71" src="sounds/boom.wav"></audio>
56-
<audio data-key="72" src="sounds/ride.wav"></audio>
57-
<audio data-key="74" src="sounds/snare.wav"></audio>
58-
<audio data-key="75" src="sounds/tom.wav"></audio>
59-
<audio data-key="76" src="sounds/tink.wav"></audio>
51+
<audio data-key="KeyA" src="sounds/clap.wav"></audio>
52+
<audio data-key="KeyS" src="sounds/hihat.wav"></audio>
53+
<audio data-key="KeyD" src="sounds/kick.wav"></audio>
54+
<audio data-key="KeyF" src="sounds/openhat.wav"></audio>
55+
<audio data-key="KeyG" src="sounds/boom.wav"></audio>
56+
<audio data-key="KeyH" src="sounds/ride.wav"></audio>
57+
<audio data-key="KeyJ" src="sounds/snare.wav"></audio>
58+
<audio data-key="KeyK" src="sounds/tom.wav"></audio>
59+
<audio data-key="KeyL" src="sounds/tink.wav"></audio>
6060

6161
<script>
62+
function playSound(e) {
63+
const audio = document.querySelector(`audio[data-key = "${e.code}"]`);
64+
const key = document.querySelector(`.key[data-key = "${e.code}"]`);
65+
if(!audio) return;
66+
audio.currentTime = 0;
67+
audio.play();
68+
key.classList.add('playing');
69+
}
70+
function removeTransition(e) {
71+
if(e.propertyName !== 'transform') return;
72+
this.classList.remove('playing');
73+
}
74+
75+
const keys = document.querySelectorAll(".key");
76+
keys.forEach(key => key.addEventListener('transitionend', removeTransition ));
77+
window.addEventListener("keydown",playSound);
78+
// figure out why playSound works vs playSound(). What's the difference?
6279

6380
</script>
6481

0 commit comments

Comments
 (0)