【发布时间】:2017-08-04 19:25:19
【问题描述】:
我正在尝试构建一个简单的钢琴,以便按键播放相应的声音。我在我的 html 和音频元素中设置了数据属性,如下所示:
<div class="piano-keys">
<div data-key="65" class="wkey" id="key"></div>
<div data-key="81" class="bkey" id="key></div>
</div>
<audio id="65" data-key="65" src="notes/261-C.mp3"></audio>
<audio id="83" data-key="83" src="notes/293-D.mp3"></audio>
我的jquery如下:
$(document).keyup(function(e){
if(e.keyCode == 65){
var c = document.getElementById('65');
c.play();
c.currentTime = 0;
} else if(e.keyCode == 83){
var c = document.getElementById('83');
cSharp.play();
cSharp.currentTime = 0;
}
});
这显然有效,但我需要 25 个 if/else,而且我知道它可以做得更干净。而不是必须针对个人 ID。我试图为他们的按键创建变量,如下所示:
var key = $('.key[data-key="${e.keyCode}"]');
但这显然从来没有奏效。如果这在舞台上还没有变得非常明显,我是 jquery 的新手。
【问题讨论】:
-
您是否正在检查 keyCode 以确保它是与您的音频相关联的键?
-
ID 表示唯一,类表示多个 - 重构您的 ID 和类。 - 你在
id="key中也缺少" -
另外,键盘适合弹钢琴吗?
-
使用 keyup 是因为在测试期间我没有通过按键获得正确的键码。
标签: javascript jquery audio addeventlistener