如何对输入年月日的格式进行判断?
如何对输入年月日的格式进行判断?
<!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?
<!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
<!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积分~
来为老师/同学的回答评分吧
0 星