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