1-14作业
来源:1-1 javaScript中内置对象介绍
慕粉2148041931
2017-12-05 20:18:08
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>1-14作业</title>
</head>
<body>
<script>
function years(argument) {
// 年
while(true){
var y=prompt('请输入年份');
if (y>2017) {
alert('请输入正确的年份');
}else if (isNaN(y)) {
alert('年份必须是4位数字');
}else{
return y;
}
}
}
function months(argument) {
// 月
while(true){
var m=prompt('请输入月份');
if (isNaN(m)) {
alert('请输入2位数字');
}else if(m<1||m>12){
alert('请输入正确的月份');
}
else {
return m;
}
}
}
function date(argument) {
// 日
while(true){
var d=prompt('请输入日期');
if (isNaN(d)) {
alert('请输入2位数字');
}else if (d<1||d>31) {
alert('请输入正确的日期');
}else{
return d;
}
}
}
function leapyears(argument) {
// 闰年?
while(true){
var ly=true;
if (y%4==0&&y%100!=0||y%400==0) {
return ly;
}
}
}
function sums(argument) {
// 总天数
var sums=0;
var m1=31,m2=28,m3=31,m4=30,m5=31,m6=30,m7=31,m8=31,m9=30,m10=31,m11=30,m12=31;
if (ly==0) {
m2=29;
}
switch(m){
case 1:
sums+=d;
break;
case 2:
sums+=m1+d;
case 3:
sums+=m1+m2+d;
break;
case 4:
sums+=m1+m2+m3+d;
break;
case 5:
sums+=m1+m2+m3+m4+d;
break;
case 6:
sums+=m1+m2+m3+m4+m5+d;
break;
case 7:
sums+=m1+m2+m3+m4+m5+m6+d;
break;
case 8:
sums+=m1+m2+m3+m4+m5+m6+m7+d;
break;
case 9:
sums+=m1+m2+m3+m4+m5+m6+m7+m8+d;
break;
case 10:
sums+=m1+m2+m3+m4+m5+m6+m7+m8+m9+d;
break;
case 11:
sums+=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+d;
break;
case 12:
sums+=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11+d;
break;
}
return sum;
}
var y=years(),
m=months(),
d=date(),
ly=leapyears(),
sum=sums();
document.write('您的生日在'+y+'年是第'+sum+'天');
</script>
</body>
</html>
老师,输入完为什么没反应呢?还有就是闰年的判断那对吗?
:::
function leapyears(argument) {
// 闰年?
while(true){
var ly=true;
if (y%4==0&&y%100!=0||y%400==0) {
return ly;
}
}
}
function sums(argument) {
// 总天数
var sums=0;
var m1=31,m2=28,m3=31,m4=30,m5=31,m6=30,m7=31,m8=31,m9=30,m10=31,m11=30,m12=31;
if (ly==0) {
m2=29;
}
switch(m){
case 1:
sums+=d;
break;
case 2:
sums+=m1+d;
case 3:
sums+=m1+m2+d;
break;
case 4:
sums+=m1+m2+m3+d;
break;
case 5:
sums+=m1+m2+m3+m4+d;
break;
case 6:
sums+=m1+m2+m3+m4+m5+d;
break;
case 7:
sums+=m1+m2+m3+m4+m5+m6+d;
break;
case 8:
sums+=m1+m2+m3+m4+m5+m6+m7+d;
break;
case 9:
sums+=m1+m2+m3+m4+m5+m6+m7+m8+d;
break;
case 10:
sums+=m1+m2+m3+m4+m5+m6+m7+m8+m9+d;
break;
case 11:
sums+=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+d;
break;
case 12:
sums+=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11+d;
break;
}
return sum;
}
4回答
樱桃小胖子
2017-12-07
要细心一些哦~
慕粉2148041931
提问者
2017-12-07
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>1-14作业</title>
</head>
<body>
<script>
function years(years) {
// 年
while(true){
var y=prompt('请输入年份');
if (y>2017) {
alert('请输入正确的年份');
}else if (isNaN(y)) {
alert('年份必须是4位数字');
}else{
return parseInt(y);
}
}
}
function months(months) {
// 月
while(true){
var m=prompt('请输入月份');
if (isNaN(m)) {
alert('请输入1-12的数字');
}else if(m<1||m>12){
alert('请输入正确的月份');
}
else {
return parseInt(m);
}
}
}
function date(date) {
// 日
while(true){
var d=prompt('请输入日期');
if (isNaN(d)) {
alert('请输入2位数字');
}else if (d<1||d>31) {
alert('请输入正确的日期');
}else{
return parseInt(d);
}
}
}
function leapyears(leapyears) {
// 闰年?
var ly=false;
if (y%4==0&&y%100!=0||y%400==0) {
ly=true;
}
return ly;
}
function sums(months,date) {
// 总天数
var sums=0;
var m1=31,m2=28,m3=31,m4=30,m5=31,m6=30,m7=31,m8=31,m9=30,m10=31,m11=30,m12=31;
if (ly==true) {
m2=29;
}
switch(m){
case 1:
sums=d;
break;
case 2:
sums=m1+d;
case 3:
sums=m1+m2+d;
break;
case 4:
sums=m1+m2+m3+d;
break;
case 5:
sums=m1+m2+m3+m4+d;
break;
case 6:
sums=m1+m2+m3+m4+m5+d;
break;
case 7:
sums=m1+m2+m3+m4+m5+m6+d;
break;
case 8:
sums=m1+m2+m3+m4+m5+m6+m7+d;
break;
case 9:
sums=m1+m2+m3+m4+m5+m6+m7+m8+d;
break;
case 10:
sums=m1+m2+m3+m4+m5+m6+m7+m8+m9+d;
break;
case 11:
sums=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+d;
break;
case 12:
sums=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11+d;
break;
}
return sums;
}
var y=years(),
m=months(),
d=date(),
ly=leapyears(),
sum=sums();
document.write('您的生日在'+y+'年是第'+sum+'天');
</script>
</body>
</html>
老师,我按照您说的做了修改,可是为什么只有日期在2月份的计算结果不正确呢。检查了几遍也没有发现问题在哪。。。
怎么都被占用了呢
2017-12-06
你的代码中有多处错误呢,switch语句中匹配月份的时候是匹配的数值1-12,但是通过prompt获取到的是字符串,所以我们需要将获取到的年月日转化为数值,使用parseInt可以,使用上边同学说的Number也可以的。计算玩日期之后,返回的应该是nums,单词写错了吧。然后判断是否是闰年部分,帮你完善了一下,请参考:
而且累计天数的时候,如上图那样就行
慕后端3285839
2017-12-05
1.年可以直接设变量用prompt传参数,月日同理
var year=Number(prompt("年"));
2.函数参数用argument看着有点别扭,不如换成year/month/day或者yy/mm/dd这种,便于后期代码维护
3.天数用switch写12句太罗嗦了,可以尝试用for语句循环输出天数。取上月天数可以用下面的代码实现。
(new Date(year,month,0).getDate());
4.你求天数的函数sum用到两个参数月和日,但是只定义了一个argument,得不到结果很正常。