javascript - 如何将按键存储到变量中以重构此代码?

标签 javascript jquery audio addeventlistener

我正在尝试制作一架简单的钢琴,以便按键可以播放相应的声音。我在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还是陌生的。

最佳答案

首先,您不能在一个页面上多次使用相同的ID,除了可以做类似的事情

$(document).keyup(function(e){
    var key = e.which;
    var note =document.getElementById(key);
    note.play();
    note.currentTime = 0;


})

它将播放所按的相应音频。我不确定您在使用currentTime做什么,但是您没有在问题中提及它,因此需要适应此操作。

关于javascript - 如何将按键存储到变量中以重构此代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45514145/

相关文章:

javascript - 将净化后的 html 转换回可显示的 html

javascript - 使用 JavaScript 删除标签之间的所有空格

javascript - 数据表:使用剥离的 HTML 进行列搜索

javascript - 如何通过按键进行快速搜索过滤?

windows - 允许计算机在从 Windows 应用程序播放音频时进入休眠状态

javascript - 使用 jQuery 为每个 div 添加标签

JavaScript/lodash 数据转换

javascript - 如果存在视口(viewport),为什么 jQuery 动画无法在移动设备上运行?

linux - linux如何播放一段音乐(ALSA)

python - 在音频分析中绘制频谱图