请教老师们,我这样写函数的作业是否最简,还有更简单的吗?

请教老师们,我这样写函数的作业是否最简,还有更简单的吗?

//声明年月日
var year,month,day;

//声明年的函数
function year() {
    while (true){
        year = parseInt(prompt("请输入您的出生年份"));
        if (isNaN(year)){
            alert("对不起,请输入数字!");
        }else {
            break;
        }
    }
}

//声明月的函数
function month() {
    while (true){
        month = parseInt(prompt("请输入您的出生月份"));
        if (isNaN(month)){
            alert("对不起,请输入数字!");
        }else {
            if (1 <= month && month <= 12){
                break;
            }else {
                alert("请输入1~12的数字!");
            }
        }
    }
}

//声明日的函数
function day() {
    while (true){
        day = parseInt(prompt("请输入您的出生日期"));
        if (isNaN(day)){
            alert("对不起,请输入数字!");
        }else {
            if (1 <= day && day <= 31){
                break;
            }else {
                alert("请输入1~31的数字!")
            }
        }
    }
}

year();
month();
day();

//声明平年函数
function commonYear() {
    var sum = 0;
    var months = [0,0,31,28,31,30,31,30,31,31,30,31,30,31];
    for (var i = 1; i <= month; i++){
        sum += months[i];
    }
    return sum + day;
}

//判断是否闰年
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
    if (month >= 3){
        var count1 = commonYear() + 1;
    }else {
        count1 = commonYear();
    }
    document.write("你的生日在" + year + "年是第" + count1 + "天。");
}else {
    var count2 = commonYear();
    document.write("你的生日在" + year + "年是第" + count2 + "天。");
}


正在回答 回答被采纳积分+1

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

4回答
麻酱o 2017-02-27 12:54:35

第55行为什么开头要两个0,一个不就行了吗

  • 提问者 陈小壹 #1
    可以,我预想是当i = 0 的时候才加的。
    2017-02-27 21:45:32
慕丝1534093 2017-02-14 10:36:19

都好厉害啊

嘘_别说话 2017-02-08 11:21:32

写的有些复杂~

可以将闰年的判断拿出来,用变量接收。如果是闰年并且月份大于2,那么总天数+1,直接写一起就行,不用把闰年和平年分开。


  • 提问者 陈小壹 #1
    求你的代码展示,让我看看你怎么写
    2017-02-08 14:45:44
  • 嘘_别说话 回复 提问者 陈小壹 #2
    var runNian=(year % 4 == 0 && year % 100 != 0) || year % 400 == 0, months=[31,28,31,30,31,30,31,31,30,31,30,31], sum=0; for(var i=0;i<month-1;i++){ sum+=months[i]; } if(runNian&&month>2){ sum+=day+1; }else{ sum+=day; } document.write("你的生日在" + year + "年是第" + sum + "天。"); 我把你后半段的代码改了一下,你看下~
    2017-02-08 15:49:10
Python工程师 2017-02-07 22:59:07

比我写的好,不过好像还可以简化的~

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

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

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

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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