键控事件在Javascript中不起作用

键控事件在Javascript中不起作用,javascript,html,calculator,Javascript,Html,Calculator,为了好玩,我正试着做一个基本的计算器。我尝试附加一些事件,以便用户使用ENTER获得结果,并使用backspace返回。但是,键盘事件不起作用 我也不明白为什么当按下按钮清空屏幕框时,C会出现在屏幕框中 有什么问题吗 我拉了一把小提琴: 将e.key更改为e.which或e.keyCode document.addEventListener("keydown", (e) => { if (e.which === 13) { e.preventD

为了好玩,我正试着做一个基本的计算器。我尝试附加一些事件,以便用户使用ENTER获得结果,并使用backspace返回。但是,键盘事件不起作用

我也不明白为什么当按下按钮清空屏幕框时,C会出现在屏幕框中

有什么问题吗

我拉了一把小提琴:


e.key
更改为
e.which
e.keyCode

document.addEventListener("keydown", (e) => {
    if (e.which === 13) {
        e.preventDefault;
        evalTest(screen.value);
    }
    if (e.which === 8) {
        e.preventDefault;
        screenValue = screenValue.slice(-1);
        screen.value = screenValue;
    }
})
更新:不推荐使用的
属性和
keyCode
属性。您不应使用ASCII值检查
属性,而应检查键的名称:

document.addEventListener("keydown", (e) => {

  if (e.key === "Enter") {
    e.preventDefault;
    evalTest(screen.value);
  }
  if (e.key === "Backspace") {
    e.preventDefault;
    screenValue = screenValue.slice(-1);
    screen.value = screenValue;
  }
})
如果您希望在将来检查其他值,以下是键值列表:


e.key
更改为
e.which
e.keyCode

document.addEventListener("keydown", (e) => {
    if (e.which === 13) {
        e.preventDefault;
        evalTest(screen.value);
    }
    if (e.which === 8) {
        e.preventDefault;
        screenValue = screenValue.slice(-1);
        screen.value = screenValue;
    }
})
更新:不推荐使用的
属性和
keyCode
属性。您不应使用ASCII值检查
属性,而应检查键的名称:

document.addEventListener("keydown", (e) => {

  if (e.key === "Enter") {
    e.preventDefault;
    evalTest(screen.value);
  }
  if (e.key === "Backspace") {
    e.preventDefault;
    screenValue = screenValue.slice(-1);
    screen.value = screenValue;
  }
})
如果您希望在将来检查其他值,以下是键值列表:


但您尝试连接按键关闭事件的位置在哪里?我只看到单击,甚至这个事件也不是预定义的。预定义的一个是“onclick”,我编辑了它,我也没有复制它,这
是允许的。拼接(11,15)。包括(按钮)
是奇怪的代码。拼接更改阵列本身,而不是制作副本。它的意思是什么?输入
C
是因为在一行中有两个
if
s与
else
但是它们应该与
if else
链接在一起,所以当第一个
if
为真时,它不会计算最后一个
else
<代码>如果(按钮==='C'){code}如果(按钮==='='='){code}其他{code}
。现在第一个
if
为真,因此它清除
屏幕值
,但是第二个
if
为假,因此它将转到
else
,在那里它将
C
添加到
屏幕值
。Dmitri,原因是当屏幕为空时不应输入字符“/”、“*”、“+”、“)。我不想复制数组,为什么要这样做?但您尝试连接键控事件的位置在哪里?我只看到单击,甚至这个事件也不是预定义的。预定义的一个是“onclick”,我编辑了它,我也没有复制它,这
是允许的。拼接(11,15)。包括(按钮)
是奇怪的代码。拼接更改阵列本身,而不是制作副本。它的意思是什么?输入
C
是因为在一行中有两个
if
s与
else
但是它们应该与
if else
链接在一起,所以当第一个
if
为真时,它不会计算最后一个
else
<代码>如果(按钮==='C'){code}如果(按钮==='='='){code}其他{code}
。现在第一个
if
为真,因此它清除
屏幕值
,但是第二个
if
为假,因此它将转到
else
,在那里它将
C
添加到
屏幕值
。Dmitri,原因是当屏幕为空时不应输入字符“/”、“*”、“+”、“)。我不想复制数组,为什么我要这样做?但是我的visualCode说哪些和键码是不推荐的?它说现在应该使用key,但我的visualCode说不推荐使用哪个和keyCode?它说关键是现在应该使用什么