表单输入默认为字符串,需先取.value再转数字;错误做法是直接对DOM元素转换,正确是parseInt(input.value);严格校验用+或Number(),带单位用parseInt/parseFloat,须加isNaN检查。

表单输入默认是字符串,直接用 + 运算符相加会拼接而非计算,比如 "10" + "5" 得到 "105"。解决核心就一条:先取 .value,再转数字。
必须先读 value 属性
HTML 输入框返回的是 DOM 元素对象,不是值本身。错写成 parseInt(inputElement) 会把 [object HTMLInputElement] 当字符串解析,结果几乎总是 NaN。
- ✅ 正确:获取值再转换 →
parseInt(inputElement.value) - ❌ 错误:对元素对象转换 →
parseInt(inputElement)
选哪个转数字方法?看需求
Number() 和 一元 + 行为一致,要求整个字符串可转为有效数字;parseInt() 和 parseFloat() 更宽容,从左到右提取数字部分。
- 要严格校验(如年龄、ID)→ 用
+input.value或Number(input.value)。若含字母或空格,结果是NaN - 处理带单位的输入(如
"123px"、"45.6kg")→ 用parseInt(input.value, 10)或parseFloat(input.value) - 需要整数且允许小数输入 →
Math.round(+input.value)或parseInt(input.value, 10)
别忘了类型安全检查
用户可能输空、空格、字母,转换后得 NaN。它是个 number 类型,但参与运算会污染结果(如 5 + NaN === NaN)。建议加一层判断:
- 用
!isNaN(num)或typeof num === 'number' && isFinite(num)验证是否有效数字 - 简单容错可写:
const n = +input.value || 0(空或非法时默认为 0)
完整小例子:两个输入框求和
在按钮点击或输入事件里实时计算:
(假设 input#x 和 input#y)- 取值:
const a = +x.value;、const b = +y.value; - 校验:
if (isNaN(a) || isNaN(b)) return alert('请输入有效数字'); - 计算:
const sum = a + b;
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











