为了账号安全,请及时绑定邮箱和手机立即绑定

如何引用对象中的键(而不是值)来实现对计算器的键盘支持?

如何引用对象中的键(而不是值)来实现对计算器的键盘支持?

富国沪深 2022-11-11 16:07:22
我正在尝试为我的计算器添加键盘支持,这样您就可以按键而不是单击屏幕。这看起来是练习使用对象的好机会,但我显然在这里做错了。你能给我一个提示吗?let keyboard = {  48: zeroFunc,  49: oneFunc,  50: twoFunc,  51: threeFunc,  52: fourFunc,  53: fiveFunc,  54: sixFunc,  55: sevenFunc,  56: eightFunc,  57: nineFunc};我试过这样的事情:document.addEventListener("keydown", checkKeyPressed, false);function checkKeyPressed(e) {    if (e.keyCode === keyboard.key) {        keyboard[action]    }}和这个:document.addEventListener("keydown", checkKeyPressed, false);function checkKeyPressed(e) {Object.keys(keyboard).forEach(key, index) => {    if (e.keyCode === key) {      keyboard[index]    }  }};我可以为每个键码做一个 if 语句,但我怀疑有一种更优雅的方法可以做到这一点。
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

好吧,既然您已经有一个将键码映射到函数的对象,您可以像这样简单地调用它们:


document.addEventListener("keydown", checkKeyPressed, false);

function checkKeyPressed(e) {

    if (keyboard[e.keyCode] != undefined) {

         keyboard[e.keyCode](e); //<--  you need to call the function, once you get it...

    }

};

或者甚至,


function checkKeyPressed(e) {

         keyboard[e.keyCode] ? keyboard[e.keyCode](e) : null; 

};


查看完整回答
反对 回复 2022-11-11
?
呼唤远方

TA贡献1856条经验 获得超11个赞

document.addEventListener("keydown", checkKeyPressed, false);

function checkKeyPressed(e) {

    const action = keyboard[e.keyCode];

    if (action) action();

}


查看完整回答
反对 回复 2022-11-11
?
千万里不及你

TA贡献1784条经验 获得超9个赞

你可以只用一个 if 语句


function checkKeyPressed(e) {

    if (keyboard[e.keyCode])

        keyboard[e.keyCode]();

}

如果e.keyCode不是对象键盘中的值之一,keyboard[e.keyCode]将返回undefined并且内部代码将不会运行。


您还需要在函数后添加括号才能实际调用它


查看完整回答
反对 回复 2022-11-11
  • 3 回答
  • 0 关注
  • 57 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信