如何对输入年月日的格式进行判断?

如何对输入年月日的格式进行判断?

如何对输入年月日的格式进行判断?http://img1.sycdn.imooc.com//climg/5bfe82b10001170b06390343.jpg

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>zuoye2</title>
</head>
<body>
 <script type="text/javascript">
 function count()
 {
            var year=parseInt(prompt("请输入出生年份")),
                month=parseInt(prompt("请输入出生月份")),
                day=parseInt(prompt("请输入出生日期"));
            var i,mdays,sum=0;
            for(i=1;i<month;i++)
            {
                if(i==4||i==6||i==9||i==11)
                {
                    mdays=30;
                }else if(i==2)
                {
                   
                    if(year%4==0&&year%100!=0||year%400==0)
                    {
                         mdays=29;
                    }else
                    {
                     mdays=28;
                    }
                }else
                {
                 mdays=31;
                }
                sum+=mdays;
            }
            sum+=day;
            document.write("您出生在"+year+"年的第"+sum+"天");
            return sum;
 }
 count();
 </script>
</body>
</html>


正在回答

登陆购买课程后可参与讨论,去登陆

5回答

1、输出的结果中year拿到的是在外面定义的year,也就是第一次输入的错误year,用parseInt()转化之后就是NaN,在count方法中才改变year的值,所以调用count之后才是输入正确的。可以这样修改:

http://img1.sycdn.imooc.com//climg/5c0371b0000154bd08300153.jpg

2、如果输入19*87,用parseInt转化之后是19,再用isNaN()判断是没有问题的,所以最后输出结果为19。在使用isNaN()判断之前可以不用转化,直接判断即可。

自己可以再测试下。

提问者 qq_鸭绿桥第一帅哥_0 2018-12-02 11:11:56

老师您说的我都明白了,我把代码按您的思路改了。

问题一:当先输入年份为*1987,然后输入正确年份1987。代码显示的结果是:您的生日是NaN年的第某天。为什么年份显示为NaN?

问题二:当先输入年份为19*87,代码没有弹出:年份输入错误,请重新输入。代码显示的结果是:您的生日是19年的第某天。为什么年份显示为19?

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>zuoye3</title>
</head>
<body>
 <script type="text/javascript">
 var year=parseInt(prompt("请输入您的生日年份"));
 function count()
 {
 //输入年月日,并对输入的年月日格式进行判断。

     while(isNaN(year))
 {
     year=parseInt(prompt("您输入的年份有误,请再次输入"));
 }
 var month=parseInt(prompt("请输入您的生日月份"));
     while(isNaN(month)||month>12||month<1)
 {
     month=parseInt(prompt("您输入的月份有误,请再次输入"));
 }
 var day=parseInt(prompt("请输入您的生日日期"));
     while(isNaN(day))
 {
     month=parseInt(prompt("您输入的日期有误,请再次输入"));
 }


 var month_count,//用于存放大小月份的参数。
     sum=0;//用于存放日期的和。
 for(i=1;i<month;i++)
 {
 if(i==4||i==6||i==9||i==11)
 {
                    month_count=30;
 }else if(i==2)
 {
                   if(year%4==0&&year%100!=0||year%400==0)
                    {
                     month_count=29;
                    }else
                    {
                     month_count=28;
                    }
 }else
 {
                    month_count=31;
 }
 sum+=month_count;
 }
 sum+=day;
 return sum;
 }

 document.write("您的生日是"+year+"年的第"+count()+"天");
 </script>
</body>
</html>


好帮手慕星星 2018-12-02 10:20:14

定义的变量形式不对:

http://img1.sycdn.imooc.com//climg/5c033e950001ba9105740269.jpg

不能直接定义month-count一个表达式,是错误的。count是一个方法,怎么能用变量month相减呢。

参考修改:

http://img1.sycdn.imooc.com//climg/5c0340b400016d4c06800117.jpg

将年份的弹框定义在函数外面作为全局变量,因为最后输出的时候用到了year变量,如果放在函数里面,就是局部变量,在函数外面是拿不到局部变量的。

http://img1.sycdn.imooc.com//climg/5c034126000142d308740448.jpg

定义一个变量赋值天数即可。

自己修改测试下,祝学习愉快!

提问者 qq_鸭绿桥第一帅哥_0 2018-12-01 09:23:24
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>zuoye3</title>
</head>
<body>
 <script type="text/javascript">
 function count()
 {
 //输入年月日,并对输入的年月日格式进行判断。
 var year=parseInt(prompt("请输入您的生日年份"));
 if(isNaN(year))
 {
     year=parseInt(prompt("您输入的年份有误,请再次输入"));
 }
 var month=parseInt(prompt("请输入您的生日月份"));
 if(isNaN(month)||month>12||month<1)
 {
     month=parseInt(prompt("您输入的月份有误,请再次输入"));
 }
 var day=parseInt(prompt("请输入您的生日日期"));
     if (isNaN(day))
 {
     month=parseInt(prompt("您输入的日期有误,请再次输入"));
 }


 var month-count,//用于存放大小月份的参数。
     sum=0;//用于存放日期的和。
 for(i=1;i<month;i++)
 {
 if(i==4||i==6||i==9||i==11)
 {
                    month-count=30;
 }else if(i==2)
 {
                   if(year%4==0&&year%100!=0||year%400==0)
                    {
                     month-count=29;
                    }else
                    {
                     month-count=28;
                    }
 }else
 {
                    month-count=31;
 }
 sum+=month-count;
 }
 sum+=day;
 return sum;
 }

 document.write("您的生日是"+year+"年的第"+count()+"天");
 </script>
</body>
</html>

老师我的代码为什么不能实现效果?

好帮手慕糖 2018-11-29 10:28:07

同学你好,这里是要对输入的年月日。判断下格式以及输入的是否正确,比如,月份,必须要是数字,且要在1-12月之间,例:

http://img1.sycdn.imooc.com//climg/5bff4ea30001bf9204950097.jpg

希望能帮助到你,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师