用户输入添加有问题

having trouble with user-input addition

javascript 这里是新手。我试图通过用户输入添加 2 个数字,但代码 returns 在控制台中出现 NaN 警告。我知道其他方法可以做到这一点,但我想使用 ES6 功能。


//HTML

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form>
        <input type="number" name="num1" id="num1">
        <input type="number" name="num2" id="num2">
        <button type="submit" value="+">+</button>
        <input type="number" name="num3" id="num3">
    </form>
    <script src="calculator.js"></script>
</body>
</html>


//JAVASCRIPT
const num1 = parseInt(document.querySelector('#num1').value);
const num2 = parseInt(document.querySelector('#num2').value);
const num3 =Number(document.querySelector('#num3').value);
const form = document.querySelector('form');


form.addEventListener('submit', e =>{
    e.preventDefault();

    const c = num1 + num2;
    form.num3.value = c;
});

发生这种情况是因为

const num1 = parseInt(document.querySelector('#num1').value);
const num2 = parseInt(document.querySelector('#num2').value);

这些变量是在提交方法之外声明的,最初它们被设置为 NaN 因为输入字段在开始时是空的并且 parseInt('') returns NaN。要解决这个问题,您只需要在表单提交方法中调用它们,这样在每次表单提交调用中您都会获得输入字段的最新值,例如:

const form = document.querySelector('form');

form.addEventListener('submit', e => {
  e.preventDefault();
  const num1 = parseInt(document.querySelector('#num1').value);
  const num2 = parseInt(document.querySelector('#num2').value);
  const c = num1 + num2;
  form.num3.value = c;
});
input {padding: 4px 8px; font-size: 1.5rem;}
<form>
  <input id="num1" type="number" min="0" /><br>
  <input id="num2" type="number" min="0" /><br>
  <input id="num3" type="number" readonly disabled/><br>
  <button>Submit</button>
</form>