1-14作业
来源:1-1 javaScript中内置对象介绍
慕仰7391156
2018-01-17 11:10:44
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var year=prompt( "请输入您的出生年份" ); var month=prompt( "请输入您的出生月份" ); var day=prompt( "请输入您的出生日期" ); function myFun(n1,n2,n3){ var arr1=[31,28,31,30,31,30,31,31,30,31,30,31]; var arr2=[31,29,31,30,31,30,31,31,30,31,30,31]; if (n1%4!=0 && n1%400!=0){ var arr=arr1; } else { var arr=arr2; } for ( var i=0;i<(n2-1);i++){ var sum=0; var sum+=arr[i]; } return sum+n3; } var n=myFun(year,month,day); document.write( "您的生日在" +year+ "年是第" +n+ "天" ); 老师您好,请问我这段脚本哪里出错了? |
1回答
Miss路
2018-01-17
问题如下:
1、for(var i=0;i<(n2-1);i++){
var sum=0;
var sum+=arr[i];
}
这段代码中,上面已经声明了var sum=0,为什么下一行又重新声明呢?而且这个声明不改出现在循环中,每次循环重新的声明一下是对资源的浪费,要把var sum=0;放到循环外面。
2、你这个逻辑挺奇怪的。
判断用哪个数组的时候,要判断是否是闰年,不是判断哪个不是闰年。参考下面的写法:
if(n1%4==0 && n1%100!=0||n1%400==0){
var arr=arr2;
}else{
var arr=arr1;
}
3、另外,最后进行sum+n3的时候,需要将n3转化成整型的才能进行运算,因为从页面获取到的所有数据都是字符串类型的。
整个代码参考如下:
<script> var year = prompt("请输入您的出生年份"); var month = prompt("请输入您的出生月份"); var day = prompt("请输入您的出生日期"); function myFun(n1, n2, n3) { var arr1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var arr2 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (n1 % 4 == 0 && n1 % 100 != 0 || n1 % 400 == 0) { var arr = arr2; } else { var arr = arr1; } var sum = 0; for (var i = 0; i < (n2 - 1); i++) { sum += arr[i]; } return sum + parseInt(n3); } var n = myFun(year, month, day); document.write("您的生日在" + year + "年是第" + n + "天"); </script>
你错的点都是知识点,认真分析一下。祝学习愉快!