1-20问题
function riqi(y,m,d) { var y = parseInt(prompt("请输入您的出生年份")); var m = parseInt(prompt("请输入您的出生月份")); var d = parseInt(prompt("请输入你的出生日期")); a = 0; if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) { while (m == 2) { a = (m - 1) * 31 + d; return "您的出生日期在" + y + "年是第" + a + "天"; break; } while (m > 2 && m % 2 == 0) { a = (m / 2 - 1) * 30 + 29 + m / 2 * 31; return "您的出生日期在" + y + "年是第" + a + "天"; break; } while (m > 2 && m % 2 !== 0) { a = (m - 3) / 2 * 30 + 29 + (m + 1) / 2 * 31; return "您的出生日期在" + y + "年是第" + a + "天"; break; } while (m < 2) { a = d; return "您的出生日期在" + y + "年是第" + a + "天"; break; } } else { while (m == 2) { a = (m - 1) * 31 + d; return "您的出生日期在那一年是第" + a + "天"; break; } while (m > 2 && m % 2 == 0) { a = (m / 2 - 1) * 30 + 28 + m / 2 * 31; return "您的出生日期在" + y + "年是第" + a + "天"; break; } while (m > 2 && m % 2 !== 0) { a = (m - 3) / 2 * 30 + 28 + (m + 1) / 2 * 31; return "您的出生日期在" + y + "年是第" + a + "天"; break; } while (m < 2) { a = d; return "您的出生日期在" + y + "年是第" + a + "天"; break; } } alert(riqi(y, m, d)); }
老师,为什么我把这个var声明放在函数体之内后,运行时没有任何反应,什么框都没有弹出来
var y = parseInt(prompt("请输入您的出生年份"));
var m = parseInt(prompt("请输入您的出生月份"));
var d = parseInt(prompt("请输入你的出生日期"));
a = 0;
function riqi(y,m,d) {
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
while (m == 2) {
a = (m - 1) * 31 + d;
return "您的出生日期在" + y + "年是第" + a + "天";
break;
}
while (m > 2 && m % 2 == 0) {
a = (m / 2 - 1) * 30 + 29 + m / 2 * 31;
return "您的出生日期在" + y + "年是第" + a + "天";
break;
}
while (m > 2 && m % 2 !== 0) {
a = (m - 3) / 2 * 30 + 29 + (m + 1) / 2 * 31;
return "您的出生日期在" + y + "年是第" + a + "天";
break;
}
while (m < 2) {
a = d;
return "您的出生日期在" + y + "年是第" + a + "天";
break;
}
} else {
while (m == 2) {
a = (m - 1) * 31 + d;
return "您的出生日期在那一年是第" + a + "天";
break;
}
while (m > 2 && m % 2 == 0) {
a = (m / 2 - 1) * 30 + 28 + m / 2 * 31;
return "您的出生日期在" + y + "年是第" + a + "天";
break;
}
while (m > 2 && m % 2 !== 0) {
a = (m - 3) / 2 * 30 + 28 + (m + 1) / 2 * 31;
return "您的出生日期在" + y + "年是第" + a + "天";
break;
}
while (m < 2) {
a = d;
return "您的出生日期在" + y + "年是第" + a + "天";
break;
}
}
alert(riqi(y, m, d));
}
当我把var声明移出去之后,可以弹出前三个输入框,点击最后一个框的确定按钮之后就什么都没弹出来了,但我把alert那句话移出函数体之后就能给我弹出最后一个计算日期结果的值得框了,请问这是为什么??
正在回答
封装的一个函数,调用的时候要在函数外部调用。在函数外部调用是,你传入了y,m,d等参数,但是这三个参数在函数内容是拿不到的,所以要把var声明拿到外面作为全局变量。
测试了你的代码,天数的计算是错误的,例如:输入平年的三月份,会多出一个月,并且你还没有添加输入的天数。不建议使用奇偶数来计算天数,因为31天就有7个月,是不平均的,可以使用下面的方法,参考:
使用数组循环对月份天数进行相加,如果是闰年,总天数+1,如果是平年,总天数保持不变。
自己试着写一写,祝学习愉快~~
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36713 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星