<!Doctype html>
<html>
<head>
<meta content="text/html" charset="utf-8" http-equiv="content-type">
</head>
<body>
<script>
/**
* @params string type 填写弹出框的提示类型 y 年 m 月 d 天
* */
function myPrompt(type) { //弹出方法
var strTemp = '请输入出生的';
var errMsg = '请正确输入';
var strType = '';
switch (type) {
case 'y':
strType += '年份(1900-目前年份)';
break;
case 'm':
strType += '月份';
break;
case 'd':
strType += '日期';
break;
default:
console.log('传参错误')
}
var val = prompt(strTemp + strType);//获取输入信息
if (isNaN(val)) { //如果不为数字返回重新填写
alert(errMsg + strType);
val = myPrompt(type);
}
val = parseInt(val); //防止出现 04 之类2位数
if (type == 'y' && !checkYear(val)) {//如果为年判断年输入是否正确
alert(errMsg + strType);
val =myPrompt(type); //重新填写
}
if (type == 'm' && !checkMonth(val)) {//如果为月判断月输入是否正确
alert(errMsg + strType);
val =myPrompt(type);//重新填写
}
if (type == 'd' && !checkDay( arguments[1], arguments[2],val)) {//如果为天判断天输入是否正确 参数1 2 为年月
alert(errMsg + strType);
val = myPrompt(type, arguments[1], arguments[2]);//重新填写
}
return val;
}
/**
* 判断平闰年
* @params num year 填写的年份
* 闰年返回 true
* */
function isYear(year) {
if (0 == year % 4) { //判断 平闰年
return true
} else {
return false
}
}
/**
* 检测年份填写函数
* @params num year 填写的年份
* */
function checkYear(year) { //检测年份输入
var nowYear = new Date().getFullYear();//获取现在的年份
var minYear = 1900;//设置最小年份为1900年
if (minYear <= year && nowYear >= year) {
return true;
} else {
return false;
}
}
/**
* 检测月份
* @params num month 填写的年份
* */
function checkMonth(month) {
if (1 <= month && 12 >= month) {
return true;
} else {
return false;
}
}
/**
* 判断这个月份多少天
* @params num year 填写的年份
* @params num month 填写的月份
* */
function getMonthDayNum(year, month) {
var allDay = 31; //默认为大月
switch (month) {
/*小月*/
case 4:
case 6:
case 9:
case 11:
allDay = 30;
break;
case 2: //二月
if (isYear(year)) {//判断闰年
allDay = 29;
} else {
allDay = 28;
}
break;
default:
//no do
}
return allDay;
}
/**
* 检查天数填写函数
* @params num month 填写的年份
* @params num day 填写的天数
* @params num month 填写的月份
* */
function checkDay(year, month, day) {
var allDay = getMonthDayNum(year, month);//获取这个月一共多少天
console.log(day,allDay);
if (1 <= day && allDay >= day) {
return true;
} else {
return false;
}
}
/**
* 获取出生年的多少天出生
* */
function getDay() { //获取多少天
var myYear = myPrompt('y');//年
var myMonth = myPrompt('m');//月
var myday = myPrompt('d', myYear, myMonth);//日 (传入 年月检测日的输入是否合法)
var res = 0;//返回结果默认值
for (var i = 1; i < myMonth; i++) {
res += getMonthDayNum(myYear, i);//获取月份的天数
console.log(i, getMonthDayNum(myYear, i), res);
}
res += myday;//加上日期
document.write("您出生在" + myYear+ "的第" + res + "天");
}
getDay();
</script>
</body>
</html>