#javascript #html #arrays #dom-events #keyboard-events
Вопрос:
function ShortCutKey(elemKey, keyCode, func) {
var elemId = document.getElementById(elemKey);
function RunFuncShorcut(enKey, numkeys) {
if (numkeys > 1) {
if (enKey.code == keyCode[0] amp;amp; 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";
}
}
Он просто ограничен двумя клавишами, что означает только комбинацию из двух клавиш. Мне нужна множественная комбинация с меньшим количеством кода… Но я все еще не знаю, как это сделать!
Ответ №1:
Вы можете использовать каждый
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";
}
}
Комментарии:
1. «Я хочу использовать его каждый раз,
ShortCutKey("SomeElem", ["Slash"], focus);
но он не работает так, как работает, когда загружается веб-страница. Я обычноconsole.log()
проверял, когда он вызывается, но он вызывается без функции keyup2. @ShreyBhangale Это похоже на другую, совершенно не связанную проблему. Я ответил: «Как я должен увеличить количество операторов amp;amp; в соответствии с аргументом массива, передаваемым в функции?»
3. Ну… что это не несвязанная проблема, которую вы видите…. Когда я нажимаю на определенный элемент, я буду пробовать любую комбинацию, такую как
ctrl
,
или «ctrl»shift
,
илиctrl
shift
alt
,
, поэтому количество кодов клавиш увеличивается, поэтому вif
инструкции для этого потребуется определенный ключ amp;amp; определенный ключ amp;amp; определенный ключ , как это