在onClick期间按下键盘按钮,并基于此运行不同的功能



目前,我有9种不同的功能,它们必须由单击时的单个按钮和键盘数字键盘触发(1到9(。

编辑:Sode的解决方案-v2

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<button type="button" id="b41" onclick="test_ks(event)">Shape Anchor Point</button>
<script>

const pressedButtons = {};
window.onkeydown = (e) => (pressedButtons[e.which] = true);
window.onkeyup = (e) => (pressedButtons[e.which] = false);
function test_ks(event) {

if (pressedButtons[97]) {
alert('numpad 1');
} else if (pressedButtons[98]) {
alert('numpad 2');
}
}

</script>
</body>
</html>


尝试过https://manjunath7472.w3spaces.com/saved-from-Tryit-2021-11-06.html

问题1.点击数字键盘1后,数字键盘2不工作&点击numpad2后,numpad1工作,但之后numpad2不工作。

2.第一次点击任何人后,从第二次开始,只需鼠标点击(不按键盘数字键盘(会触发警报。

3.第一次按键clcik后,它不考虑键盘按压,警报仅由鼠标点击触发。

当您将函数绑定到HTML标记中的onclick时,您只想传递函数的名称,因为DOM 将传入事件参数

<button type="button" id="b41" onclick="myFunction()">myButtonName</button>

而且,按钮的点击事件不会附带任何键盘数据,因此您可能需要研究使用keydown和keyup事件监听器(可能在窗口对象上(来跟踪按下了哪些键,并在点击按钮时使用这些信息

<button type="button" id="b41" onclick="myFunction()">myButtonName</button>
<span id="output"></span>
<script>
const pressedButtons = {};
const outputSpan = document.querySelector('#output');
window.onkeydown = (e) => (pressedButtons[e.which] = true);
window.onkeyup = (e) => (pressedButtons[e.which] = false);
function myFunction(event) {
console.log(pressedButtons);
if (pressedButtons[97]) {
outputSpan.innerHTML = 'numpad 1';
} else if (pressedButtons[98]) {
outputSpan.innerHTML = 'numpad 2';
} else {
outputSpan.innerHTML = '';
}
}
</script>

编辑:更新以更改跨度的文本,而不是使用alert()

最新更新