JavaScript数字输入校验:输入非数字时弹出提示引导重输
修正后的年龄计算代码(处理非数字输入)
以下是修复后的完整代码,解决了非数字输入检测无效、年龄计算错误等问题:
<!DOCTYPE html> <html> <head> <title>Calc the age</title> <meta charset="utf-8"> </head> <body> <script> var name = prompt("Insert your name:"); var born = parseInt(prompt("Insert your year born (with 4 numbers format):")); // 循环验证输入:非数字 或 年份不在合理范围 while (isNaN(born) || born < 1922 || born > 2021) { // 根据错误类型给出对应提示 if (isNaN(born)) { alert("不接受字母输入,请重新输入正确的4位出生年份!"); } else { alert("你输入的年份不符合要求,请输入1922-2021之间的4位数字!"); } born = parseInt(prompt("Insert your year born (with 4 numbers format):")); } // 循环结束后再计算年龄,确保使用正确的出生年份 var age = 2022 - born; document.write("The year born of " + name + " is " + born + ". " + "In 2022 he'll have " + age + " years old."); </script> </body> </html>
关键修改说明:
- 非数字输入检测:原代码中
born === NaN永远为false(NaN与任何值都不相等),改用isNaN(born)才能正确判断输入是否为有效数字 - 年龄计算时机:将年龄计算移到验证循环之后,避免使用初始的无效值计算年龄
- HTML规范修正:移除了
<body>外重复的<title>标签,补充了<body>标签 - 提示信息优化:区分非数字输入和年份范围错误的提示,更明确地引导用户修正输入
- 变量声明优化:循环内不再重复声明
born变量,直接赋值即可
内容的提问来源于stack exchange,提问作者Bruno França
相关产品推荐
相关产品推荐

