You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:39:32