1-14循环中用if判断大小月好像不成功,好像一直都是执行的sum+=30,这是为什么?
//弹出窗口日期输入函数
function inputBirthday(str){
do{
var birthDay=prompt("请输入您的"+str);//弹出窗口输入需要的日期信息
birthDay=parseInt(birthDay); //将输入的日期字符串转换为整数
}while(isNaN(birthDay) || birthDay<1);
//判断转换后的数据是不是非数字或者是否大于0,是非数字或者小于0 则需重新输入
return birthDay; //返回输入后转化为数值的日期
}
//月份输入函数
function inputMonth(){
do{
var birthDay=inputBirthday("出生月份"); //输入月份
}while(birthDay>12); //当输入的月份值大于12的时候需要重新输入
return birthDay; //返回输入后转化为数值的日期
}
//日期输入函数
function inputDay(y,m){
do{
var birthDay=inputBirthday("出生日期"); //输入日期
}while(!(isDay(y,m,birthDay))); //判断日期值输入是否正确,不正确需重新输入
return birthDay;
}
//判断日期值输入是否正确函数
function isDay(y,m,d){
if(m!=2){
if(d>31){
return false; //如果日期值大于31,则返回false,表示日期值输入错误
}else{
if(d==31){
if((m<8 && m%2==1) ||(m>7 && m%2==0)) {
return true; //如果日期值是31,并且是大月,则返回true
}else {return false;} //如果日期是31,且不是大月,则返回false
}else return true;
}
}else{ //如果月份等于2
if(isLeapYear(y)){ //月份为2且是闰年的时候
if(d<=29){ //日期值小于或等于29,则返回true
return true;
}else{return false;} //2月,且闰年,日期值大于29,则返回false
}else { //月份为2且非闰年的时候
if(d<=28){
return true; //日期值小于或等于28,则返回true
}else {return false;} //2月,非闰年,日期值大于28,则返回false
}
}
}
//闰年判断函数
function isLeapYear(y){
//判断是否为闰年,闰年:是4的倍数并且不是100的倍数,或者是400的倍数的年份是闰年
if(y%4==0 && y%100!=0){
return true;
}else if(y%400==0 ){
return true;
}else{
return false;
}
}
//出生日期是一年中第多少天计算函数
function countDate(y,m,d){
var sum=d; //第多少天的 求和变量
var i=3;
if(m>1){
if(m==2){
return sum+=31; //当月份为2时,返回天数值为31+d
}else{ //当月份大于2时
if(isLeapYear){
sum+=60; //当为闰年时,1月和2月总的天数是60天
}else{ sum+=59} //当为平年时,1月和2月总的天数是59天
while(i<m){ //当月份大于3时,对天数依据月数 进行循环求和
if((m<8 && m%2==1) ||(m>7 && m%2==0)){
sum+=31; //当是大月时,天数加 31天
}else sum+=30; //当是小月时,天数加30天
i++;
}
return sum; //返回所求得的天数值
}
}else return sum; //当月份为1时,直接返回赋值为day的天数求和变量
}
var year=inputBirthday("出生年份");
var month=inputMonth();
var day=inputDay(year,month);
document.write("您的生日在"+year+"年的第"+countDate(year,month,day)+"天");
//console.log(typeof(year)); 以下为检查步骤
//console.log(typeof(month));
//console.log(typeof(day));
//console.log(countDate(year,month,day));
正在回答
你好,如下图:这个应该是i哦,不是m,m的话,是输入的最终月份,假如你输入的是5月,m呢,就一直是5,但是想要加上3,4月的天数(1,2月的在上面步骤中有添加),需要是用i来控制呀,因为i最初是3,然后执行一次之后会是4,这里稍微有点绕你结合代码理解下。
祝学习愉快~
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36713 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星