function ShortCutKey(elemKey, keyCode, func) {
var elemId = document.getElementById(elemKey);
function RunFuncShorcut(enKey, numkeys) {
if (numkeys > 1) {
if (enKey.code == keyCode[0] && enKey.code == keyCode[1]) func();
} else{
if (enKey.code == keyCode[0]) func();
}
}
if (Array.isArray(keyCode)){
if (keyCode.length > 1) {
elemKey.addEventListener("keyup", function() {
RunFuncShorcut(keyCode, 2);
});
} else{
elemKey.addEventListener("keyup", function() {
RunFuncShorcut(keyCode, 1);
});
}
}
else{
throw "2nd Argument must be an Array";
}
}
它只限于两个键,意味着只有两个键的组合。我想要代码更少的多重组合。。。但我还是不知道怎么做!
您可以使用每个
every()
方法测试数组中的所有元素是否都通过由所提供的功能实现的测试。它返回一个布尔值。
function ShortCutKey(elemKey, keyCodes, func) {
const elemId = document.getElementById(elemKey);
function RunFuncShorcut(enKey) {
if (keyCodes.every(keyCode => keyCode === enKey.code)) func();
}
if (Array.isArray(keyCodes)){
elemKey.addEventListener("keyup", function() {
RunFuncShorcut(keyCodes);
});
}
else{
throw "2nd Argument must be an Array";
}
}