繁体   English   中英

用户输入添加有问题

[英]having trouble with user-input addition

javascript 新手在这里。 我试图通过用户输入添加 2 个数字,但代码在控制台中返回 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);

这些变量在 submit 方法之外声明,最初它们设置为NaN ,因为输入字段在开始时为空,并且parseInt('')返回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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM