Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何引用对象中的键(而不是值)来实现计算器的键盘支持?_Javascript_Object_Keyboard_Calculator_Key Value - Fatal编程技术网

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

Javascript 如何引用对象中的键(而不是值)来实现计算器的键盘支持?,javascript,object,keyboard,calculator,key-value,Javascript,Object,Keyboard,Calculator,Key Value,我正在尝试为我的计算器添加键盘支持,这样你就可以只按键盘而不用点击屏幕了。这看起来是一个练习使用对象的好机会,但我显然做错了什么。你能给我一个提示吗 让键盘={ 48:zeroFunc, 49:oneFunc, 50:twoFunc, 51:threeFunc, 52:fourFunc, 53:fiveFunc, 54:sixFunc, 55:sevenFunc, 56:eightFunc, 57:nineFunc }; 我试过这样的方法: document.addEventListener(&

我正在尝试为我的计算器添加键盘支持,这样你就可以只按键盘而不用点击屏幕了。这看起来是一个练习使用对象的好机会,但我显然做错了什么。你能给我一个提示吗

让键盘={ 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语句,但我认为有一种更优雅的方法可以做到这一点。

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

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...
    }
};

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

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...
    }
};
document.addEventListenerkeydown、checkKeyPressed、false; 功能检查键按下{ const action=键盘[e.keyCode]; 如果行动; } document.addEventListenerkeydown、checkKeyPressed、false; 功能检查键按下{ const action=键盘[e.keyCode]; 如果行动; }
你只需要一个if语句就可以做到

function checkKeyPressed(e) {
    if (keyboard[e.keyCode])
        keyboard[e.keyCode]();
}
如果e.keyCode不是对象键盘中的值之一,则键盘[e.keyCode]将返回未定义且内部代码将不会运行


您还需要在函数后面添加括号才能真正调用它

只需一条if语句即可

function checkKeyPressed(e) {
    if (keyboard[e.keyCode])
        keyboard[e.keyCode]();
}
如果e.keyCode不是对象键盘中的值之一,则键盘[e.keyCode]将返回未定义且内部代码将不会运行


您还需要在函数后面添加括号才能真正调用它

这实际上对我不起作用!这有点像哈克索的答案,我试图通过去掉常量来简化他的答案,但由于某种原因,它不起作用,也许可以尝试document.onkeydown=checkKeyPressed而不是document.addEventListenerkeydown,checkKeyPressed,false;这实际上对我不起作用!这有点像哈克索的答案,我试图通过去掉常量来简化他的答案,但由于某种原因,它不起作用,也许可以尝试document.onkeydown=checkKeyPressed而不是document.addEventListenerkeydown,checkKeyPressed,false;