[英]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.