为啥输出的为undefined天?

为啥输出的为undefined天?

function getDay(year,month,date){
    	var sum;
    	if ((year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) && month > 2) {
        	switch(month){
        	case 1:
        	sum=day;
        	break;
        	case 2:
        	sum=31+day;
        	break;
        	case 3:
        	sum=60+day;
        	break;
        	case 4:
        	sum=91+day;
        	break;
        	case 5:
        	sum=121+day;
        	break;
        	case 6:
        	sum=152+day;
        	break;
        	case 7:
        	sum=182+day
        	break;
        	case 8:
        	sum=213+day;
        	break;
        	case 9:
        	sum=244+day;
        	break;
        	case 10:
        	sum=274+day;
        	break;
        	case 11:
        	sum=305+day;
        	break;
        	case 12:
        	sum=335+day;
    }    
    }
    	else {
        	switch(month){
        	case 1:
        	sum=day;
        	break;
        	case 2:
        	sum=30+day;
        	break;
        	case 3:
        	sum=59+day;
        	break;
        	case 4:
        	sum=90+day;
        	break;
        	case 5:
        	sum=120+day;
        	break;
        	case 6:
        	sum=151+day;
        	break;
        	case 7:
        	sum=181+day
        	break;
        	case 8:
        	sum=212+day;
        	break;
        	case 9:
        	sum=243+day;
        	break;
        	case 10:
        	sum=273+day;
        	break;
        	case 11:
        	sum=304+day;
        	break;
        	case 12:
        	sum=334+day;
        	}
    	}
    	return sum;
    }
    function getBirth(){
    var year=parseInt(prompt("请输入您的出生年份:")),
		month=parseInt(prompt("请输入您的出生月份:")),
		date=parseInt(prompt("请输入您的出生日期:")),
		day=getDay();
		document.write('您的生日在'+year+"年是"+day+'天');
	}
	getBirth();

http://img1.sycdn.imooc.com/climg//596f3bdf0001416802820066.jpg

正在回答

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

2回答

你的方法调用没有传参数

  • 安生012 提问者 #1
    还是有点不太明白
    2017-07-20 12:38:27
  • 小王子抓猫咪 回复 提问者 安生012 #2
    方法定义时,你不是指定了各种形参吗,year, month, day。那么你调用时就需要传入这些参数。 getDay(year, month, date); 你需要传入参数才能进行内部计算。 最后,你这属于编程基础不行。
    2017-07-20 17:37:47
  • 安生012 提问者 回复 小王子抓猫咪 #3
    好吧,谢谢~
    2017-07-20 18:42:23
Observer1 2017-07-20 19:57:57

帮楼主调试了一下,发现是函数中的局部变量day没有声明and定义,定义为0并且在下面的函数里传入year,month,date就可以了。另外,判断闰年不需要判断月份是否大于2,那么1月份岂不是根本无法进入switch了吗?还有,不是闰年的情况里2月的话应该加上31不是加30,1月有31天噢。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        function getDay(year,month,date){
        var sum, day=0;
        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
            switch(month){
            case 1:
            sum=day;
            break;
            case 2:
            sum=31+day;
            break;
            case 3:
            sum=60+day;
            break;
            case 4:
            sum=91+day;
            break;
            case 5:
            sum=121+day;
            break;
            case 6:
            sum=152+day;
            break;
            case 7:
            sum=182+day
            break;
            case 8:
            sum=213+day;
            break;
            case 9:
            sum=244+day;
            break;
            case 10:
            sum=274+day;
            break;
            case 11:
            sum=305+day;
            break;
            case 12:
            sum=335+day;
            }    
        }
        else {
            switch(month){
            case 1:
            sum=day;
            break;
            case 2:
            sum=31+day;
            break;
            case 3:
            sum=59+day;
            break;
            case 4:
            sum=90+day;
            break;
            case 5:
            sum=120+day;
            break;
            case 6:
            sum=151+day;
            break;
            case 7:
            sum=181+day
            break;
            case 8:
            sum=212+day;
            break;
            case 9:
            sum=243+day;
            break;
            case 10:
            sum=273+day;
            break;
            case 11:
            sum=304+day;
            break;
            case 12:
            sum=334+day;
            }
        }
        return sum;
    }
    function getBirth(){
    var year=parseInt(prompt("请输入您的出生年份:")),
        month=parseInt(prompt("请输入您的出生月份:")),
        date=parseInt(prompt("请输入您的出生日期:")),
        day=getDay(year, month, date);
        document.write('您的生日在'+year+"年是"+day+'天');
    }
    getBirth();
    </script>
</body>
</html>


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

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

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

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

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

在线咨询

领取优惠

免费试听

领取大纲

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