javascript - 如何增强这样的代码

标签 javascript html dom

我现在正在从事某种打字辅导工作。 我有用纯 HTML 编写的简单键盘模型。 一些 HTML 在这里

<div class="keyboard">
<div class="keyboardRow"><span class="key" id="q">Q<sub>Й</sub></span>
<span class="key" id="w">W<sub>Ц</sub></span>
<span class="key" id="e">E<sub>У</sub></span>
<span class="key" id="r">R<sub>К</sub></span>
</div>
</div>

然后我想更改按下的键的边框颜色。 我用 Javascript 创建了这样一段“垃圾代码”

document.onkeypress = checkKeyPress;
function checkKeyPress(e)
{ var KeyID = e.charCode;
  switch (KeyID){
  case 113: pkey = document.getElementById("q");
        pkey.style.borderColor = "red";
        break; 
   case 119: 
   pkey = document.getElementById("w");
   pkey.style.borderColor = "red";
   break; 
   case 101: 
   pkey = document.getElementById("e");
   pkey.style.borderColor = "red";
   break;

............

等等。正如你们所看到的,伙计们,我的问题是:我怎样才能避免意大利面条式的“case”语句并编写看起来漂亮且易于阅读的代码?

最佳答案

实现此目的的一种方法是

...
pkey = document.getElementById(String.fromCharCode(KeyID));
pkey.style.backgroundColor = "red";
...

该解决方案将按键代码(如115、119等)翻译成相应的字符。由于您的键标记的 ID 等于它们所代表的键,因此您只需通过 id 获取元素,其中 id 是字母。

关于javascript - 如何增强这样的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427586/

相关文章:

javascript - jquery获取 'div'标签后每个有多少个 'h3'

javascript - 增加页面上所有数字的字体大小(Javascript、JQuery、DOM 操作)

c++ - QT:读取 xml 文件并使用 DOM 解析器解析它

javascript - 为什么我可以用 [val] 访问 js 对象,但不能用 .val 访问?

javascript - 即使使用preserveAspectRatio后,D3直方图也没有响应

javascript - 如何在没有 jquery 的情况下制作 slider 图片库

javascript - 鼠标事件未在 html5 Canvas 上触发

javascript - 如何从 Angular 之外编译动态模板?

javascript - 简单的悬停控件

javascript - 操纵 Goodreads 添加书籍小部件