如何对输入年月日的格式进行判断?
如何对输入年月日的格式进行判断?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <!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> |
0
收起
正在回答
5回答
1、输出的结果中year拿到的是在外面定义的year,也就是第一次输入的错误year,用parseInt()转化之后就是NaN,在count方法中才改变year的值,所以调用count之后才是输入正确的。可以这样修改:
2、如果输入19*87,用parseInt转化之后是19,再用isNaN()判断是没有问题的,所以最后输出结果为19。在使用isNaN()判断之前可以不用转化,直接判断即可。
自己可以再测试下。
qq_鸭绿桥第一帅哥_0
2018-12-02 11:11:56
老师您说的我都明白了,我把代码按您的思路改了。
问题一:当先输入年份为*1987,然后输入正确年份1987。代码显示的结果是:您的生日是NaN年的第某天。为什么年份显示为NaN?
问题二:当先输入年份为19*87,代码没有弹出:年份输入错误,请重新输入。代码显示的结果是:您的生日是19年的第某天。为什么年份显示为19?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <!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> |
qq_鸭绿桥第一帅哥_0
2018-12-01 09:23:24
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <!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> |
老师我的代码为什么不能实现效果?
前端小白入门系列课程
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36712 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧