求老师指导下

求老师指导下

var year = parseInt(prompt("请输入您出生的年份")),
		month = parseInt(prompt("请输入您出生的月份"), )
	day = parseInt(prompt("请输入您出生的日子")),
		yearDdy = (31, 28, 31, 30, 51, 30, 31, 31, 30, 31, 30, 31); //创建一个数组,包含的是每个月有多少天

	var sum;
	var allDay;

	function jisuan() {
		//计算输入年份是否为闰年,是的话改变2月的天数
		if (year % 4 == 0 && year % 10 != 0 || year % 400 == 0) {
			year[1] = 29;
		}

		for (var i = 0; i < month; i++) {
			sum += yearDdy[i]
		}
		allDay = sum + day;
		return allDay
	}

	alert("您的生日在" + year + "年" + ",在这一年的" + allDay + "天。")

思路是用数组包含每个月几天,然后判断输入的年份是否为闰年,是闰年的话就通过索引修改2月的天数,然后再通过索引把之前月份的天数加起来,再加上这个月的天数,返回一个总天数,目前问题是是返回的总天数是undefined,有点费解

正在回答

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

2回答

同学你好,1、sum与allDay若是在定义不赋值的话,会是undefined,导致最后相加的时候错误,建议:可以先赋值为0,例:

http://img1.sycdn.imooc.com//climg/5c2ef31c0001890b03540110.jpg

2、定义数组这里,应该是中括号[],另,没有51天的天数,应该是31例:

http://img1.sycdn.imooc.com//climg/5c2ef437000103a410220142.jpg

3、调用函数得到的是函数的返回值,这里输出天数,应该调用函数。函数不调用的话,是无法执行的哦。例:

http://img1.sycdn.imooc.com//climg/5c2ef3840001ab5311060107.jpg

4、数组下标是从0开始的,而输出的月份,是有1月开始的,这里的月份应该减1,否则会把输入的月份的天数也添加上,但是输入的这个月还没有过完,不能按整月添加。例:

http://img1.sycdn.imooc.com//climg/5c2ef3ce0001656b05710129.jpg

5、数组是yearDdy,所以这里应该改变yearDdy的值,例:

http://img1.sycdn.imooc.com//climg/5c2ef47e000159ce02810111.jpg

6、闰年的判断条件不够严谨,判断年份是否是闰年,需满足下列条件之一(两个条件同时存在,一个为真即可):

(1) 年份能整除4但是不能整除100

(2) 年份能整除400

希望能帮助到你,欢迎采纳。

祝学习愉快!

  • 百万何必当真 提问者 #1
    老师,有个小疑问,var i = 0; i < month-1; i++;当月份输入为1月时,month=0, 0<0--.感觉是不是i<=month-1更合理,求老师解答
    2019-01-04 16:57:34
  • 百万何必当真 提问者 #2
    测了下 然后想了想,还是<合适,不等于会多算一个月
    2019-01-04 16:59:19
提问者 百万何必当真 2019-01-04 13:18:34

补充:自我觉得是操作数组的方法不对

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

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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