为什么“用总天数算出当月1号的星期数”这步总是不对?

<script>
    var year=prompt("请输入年份:");
    var month=prompt("请输入月份:");
    var allDay=0;

    //计算输入的年份距离1900年的天数
    for(var i=1900;i<=year;i++){
        if((i%4==0&&i%100!=0)||i%400==0){
            allDay+=366;
        }else{
            allDay+=365;
        }
    }

    //当月天数的总数
    var monthDay=0;
    for(var i=1;i<=month;i++){
        switch(i){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                monthDay=31;
                break;
            case 2:
                if((year%4==0&&year%100!=0)||year%400==0){
                    monthDay=29;
                }else{
                    monthDay=28;
                }
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                monthDay=30;
                break;
        }
    }

  //用总天数算出当月1号的星期数
    var day=allDay%7;
    console.log(day);

    //画出日期排布
    document.write("一&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>");
    for(var i=1;i<day;i++){
        document.write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
    }
    for(var i=1;i<=monthDay;i++){
        document.write(i+"&nbsp;&nbsp;&nbsp;&nbsp;");
        if((i+day)%7==0){
            document.write("<br/>");
        }
    }

为什么“用总天数算出当月1号的星期数”这步总是不对?

获得该月1号为星期几的地方改为以下代码:

    //得出该月一号为星期几
    var day = new Date(year + '/' + month + '/' + '01').getDay();
    if (day === 0) {
        day = 7
    }

另外你还有个地方有问题
循环里 判断换行的位置改为:

if ((i - 1 + day) % 7 == 0)

如果能帮到你,望【采纳】谢啦

var monthDay = 0下面的那个for循环里 最后面是不是应该 allDay += monthDay ; for循环里的条件应该是i < month而非<=;for循环完后因为是当月1号,还需要allDay++;
另外,allDay%7 算出的是当天是星期几,星期数应该是allDay/7吧?