1-14作业

1-14作业

实在是不会了,帮忙看一下,改一下。现在一点思路都没有了。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>arguments</title>
</head>
<body>
<script>
       function data(){
            var year,month,date;
            while(year==undefined){
            year=prompt("请输入您的出生年份");
            }
            while(year.length!==4){
                alert("输入错误,请重新输入");
                year=prompt("请重新输入您的出生年份");
            }
            month=prompt("请输入您的出生月份");
            while(month<1 || month>12){
                alert("输入错误,请重新输入");
                month=prompt("请重新输入您的出生月份");
            }
            date=prompt("请输入您的出生日期");
            while(date<1 || date>31){
                alert("输入错误,请重新输入");
                date=prompt("请重新输入您的出生日期");
            }
        }
      function days(){
        
       if(year%4=0 && year%100!=0 || year%400=0){
              var sum=0,monthdays=[31,29,31,30,31,30,31,31,30,31,30,31],i;
              for(i=0;i<month-1;i++){
                  sum+=monthdays[i];
              }
       }else{
                var sum=0,monthdays=[31,28,31,30,31,30,31,31,30,31,30,31],i;
              for(i=0;i<month-1;i++){
                  sum+=monthdays[i];
              }
       }
   data();
   days();
   var years=parseInt(year),sums=parseInt(sum+date);
   document.write("您的生日在"+years+"年的第"+sums+"天");
</script>
</body>
</html>


正在回答

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

1回答

我测试了你的代码,有以下几个问题:

(1)你的days()函数缺少一个闭合的花括号,导致程序无法运行。

(2)判断是否为闰年的地方错误:

http://img1.sycdn.imooc.com//climg/5a703f4c0001e4ba05110074.jpg

判断年份你用了一个等号,一个等号是赋值,两个和三个等号为判断。

(3)程序运行到var years=parseInt(year),sums=parseInt(sum+date);这一步时会报错:year没有定义,因为你的year是在data函数中定义的,是局部变量,外面是用不了的。并且你的sum也是在days()函数中局部定义的,这样直接用都是不可以的。

(4)这有我给你修改的代码,可以看一下:

<script>

    var year=prompt("请输入您的出生年份");

    while (year.length != 4) {

        alert("输入错误,请重新输入");

        year = prompt("请重新输入您的出生年份");

    }

    var month = parseInt(prompt("请输入您的出生月份"));

    while (month < 1 || month > 12) {

        alert("输入错误,请重新输入");

        month = parseInt(prompt("请重新输入您的出生月份"));

    }

    var date = parseInt(prompt("请输入您的出生日期"));

    while (date < 1 || date > 31) {

        alert("输入错误,请重新输入");

        date = parseInt(prompt("请重新输入您的出生日期"));

    }

    year = parseInt(year);

    function days() {

        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

            var days = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

        } else {

            var days= new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

        }

        for (var i = 0; i < month - 1; i++) {

            date += days[i];

        }

    }

    days();

    document.write("您的生日在" + year + "年的第" + date + "天");

    </script>

如果还有什么问题,你可以提交作业给老师的呀!或者我们可以一起交流!盆友(#^.^#)


  • 改吃素的狮子 提问者 #1
    那个我想问一下,作业要求是计算日期和弹出窗口都用函数封装。我分别封装或着封装在一个函数里之后,只有弹出窗口,后面的计算出不来。能帮忙给解释一下吗? <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>arguments</title> </head> <body> <script> function data(){ var year=prompt("请输入您的出生年份"); while (year.length !== 4) { alert("输入错误,请重新输入"); year = prompt("请重新输入您的出生年份"); } var month = parseInt(prompt("请输入您的出生月份")); while(month < 1 || month > 12){ alert("输入错误,请重新输入"); month = parseInt(prompt("请重新输入您的出生月份")); } var date = parseInt(prompt("请输入您的出生日期")); while (date < 1 || date > 31) { alert("输入错误,请重新输入"); date = parseInt(prompt("请重新输入您的出生日期")); } year = parseInt(year); } data(); function days() { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { var days = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); } else { var days= new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); } for (var i = 0; i < month - 1; i++) { date += days[i]; } } days(); document.write("您的生日在" + year + "年的第" + date + "天"); </script> </body> </html>
    2018-01-31 11:20:44
  • bbbboom 回复 提问者 改吃素的狮子 #2
    你的year,month,date变量还是在data函数内部,days函数是拿不到的,所以不会执行days函数,也就不会有输出内容,你可以把变量拿到外面,看看下面的代码: var year, month, date; function data() { year = prompt("请输入您的出生年份"); while (year.length !== 4) { alert("输入错误,请重新输入"); year = prompt("请重新输入您的出生年份"); } month = parseInt(prompt("请输入您的出生月份")); while (month < 1 || month > 12) { alert("输入错误,请重新输入"); month = parseInt(prompt("请重新输入您的出生月份")); } date = parseInt(prompt("请输入您的出生日期")); while (date < 1 || date > 31) { alert("输入错误,请重新输入"); date = parseInt(prompt("请重新输入您的出生日期")); } year = parseInt(year); } data();
    2018-01-31 11:33:34
  • 改吃素的狮子 提问者 回复 bbbboom #3
    好的,十分感谢了。
    2018-01-31 12:14:21
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

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

在线咨询

领取优惠

免费试听

领取大纲

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