gpt4 book ai didi

javascript - 当我已有 onclick 事件时,如何添加按键事件?

转载 作者:行者123 更新时间:2023-12-03 01:41:55 26 4
gpt4 key购买 nike

我正在构建一个网络计算器。

当用户单击按钮时它工作正常,但我也希望用户按下按键。我不知道如何顺利​​地做到这一点。

我只包含了程序的事件监听器部分,因为其余部分对于我的问题来说是不必要的。

const a = document.getElementsByTagName('input');

// button press conditions
for (let i = 0; i < a.length; i++) {
a[i].addEventListener('click', function(e) {
// operators
if (a[i].value === '+' ||
a[i].value === '-' ||
a[i].value === '×' ||
a[i].value === '÷') {
prsOpr(i);
}

// decimal button
else if (a[i].value === '.') prsDeci(i);

// equal button
else if (a[i].value === '=') prsEql(i);

// backspace button
else if (a[i].value === '←') prsBksp();

// clear button
else if (a[i].value === 'Clear') prsClr();

// any number button
else logNum(i);
});
};

最佳答案

您当前的代码使用匿名函数作为单击事件的回调,并且由于它是匿名的,因此您无法在不重复的情况下将其重用于其他事件。因此,将回调函数分开并给它一个名称。然后,只需使用第二个 .addEventListener() 并将其(和第一个)指向相同的函数:

这是一个例子:

let input = document.querySelector("input");

input.addEventListener("click", foo); // Set up a click event handler
input.addEventListener("keydown", foo); // Set up a key down event handler

// Both event registrations point to this one function as their callback
// so, no matter whether you click or type in the field, this function
// will run. But, all event handlers are passed a reference to the event
// that triggered them and you can use that event to discern which action
// actually took place.
function foo(evt){
console.log("The " + evt.type + " event has been triggered.");
}
<input>

关于javascript - 当我已有 onclick 事件时,如何添加按键事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50800948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com