<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <p>
        你的生日:<input type="text" size="4" id="year">年
        <input type="text" id="month" size="2">月
        <input type="text" size="2" id="date">日
        <input type="button" value="走你" onclick="getDays()">
        <input type="text" id="result">
    </p>
    <script type="text/javascript">
        function getDays() {
            //获取年月日
            var year = document.getElementById("year").value;
            var month = document.getElementById("month").value;
            var date = document.getElementById("date").value;
            // 检验数据格式是否正确
            if (!checkBirth(year, month, date)) {
                return;
            }
            //总天数 从出生年到当前年月日
            var total = 0;
            total += eval(getDaysOfBirthYear(year, month, date)) +
            eval(getDaysOfYears(year)) + eval(getDaysOfNow());
            document.getElementById("result").value = "你已经活了" + total + "天了";
        }
        // 获取当前的年份
        function getNowYear() {
            return new Date().getFullYear();
        }
        // 获取当前的月份
        function getNowMonth() {
            return new Date().getMonth() + 1;
        }
        // 获取当前的日期
        function getNowDate() {
            return new Date().getDate();
        }
        // 检验数据格式
        function checkBirth(year, month, date) {
            // 在这里检查year是否是1900年以后的。如果不是return false
            if (year < 1900) {
                return false;
            }
            // 检查month是否是1~12之间,如果不是 return false
            var nian = (month > 1 && month < 12) ? true : false;
            // 检查date是否是当前月的日期以内的(大月1~31,小月1~30,2月 1~28或者1~29) 如果不是return false
            switch (month) {
                case '4':
                case '6':
                case '9':
                case '11':
                    date = 30;
                    break;
                case '2':
                    if (nian == true) {
                        date = 29;
                    } else {
                        date = 28;
                    }
                    break;
                default:
                    date = 31;
            }
            return true;
        }
        // 根据传入的年份和月份得到当年当月的总天数
        function getDaysOfMonth(year, month) {
            // 最终返回总天数
            var days ;
            switch (month) {
                case '4':
                case '6':
                case '9':
                case '11':
                    days = 30;
                    break;
                case '2':
                    if (year % 400 == 0 || year % 100 != 0 && year % 4 == 0) {
                        days = 29;
                    } else {
                        days = 28;
                    }
                    break;
                default:
                    days = 31;
            }
            return days
        }
        // 根据传入的年月日,计算这一年还剩多少天
        function getDaysOfBirthYear(year, month, date) {
            var days = 0;
            // 根据data计算month这个月还剩多少天。并且加到days上。
            // 循环的把month后面剩下的几个月的天数全部加上去。
            // 最后返回days。
            days += getDaysOfMonth(year, month) - date

            for (var i = Number(month) + 1; i <= 12; i++) {
                days += getDaysOfMonth(year, i.toString())
            }
            return days
        }
        // 根据传入的年份,计算传入年份到今年之前的总天数
        function getDaysOfYears(year) {
            var days = 0
            // 循环从year开始,到 getNowYear()结束。
            for (var i = Number(year) + 1; i < getNowYear(); i++) {
                if (i % 400 == 0 || i % 100 != 0 && i % 4 == 0) {
                    days += 366;
                } else {
                    days += 365;
                }
            }
            return days
            // 最后返回days
        }
        // 计算今年过去了多少天
        function getDaysOfNow() {
            var days = getNowDate()
            for (var i = 1; i < Number(getNowMonth()); i++) {
                days += getDaysOfMonth(getNowYear(), i)
            }
            return days
        }
    </script>
</body>
</html>