在javaScript打印循环内循环超过所需的值

时间:2015-08-23 14:10:43

标签: loops double

我需要打印月份日历,从月份的下拉选择选项中选择。我使用双循环来创建表格(一个用于行,第二个用于填充行数天)。问题是我的代码是所有月份的打印天数高达35,除了2月28日。

  var list1 = document.getElementById("list1");

list1.onclick = function(){
    var div1 = document.getElementById("monthCal");
    div1.innerHTML="";
    populateMonth(this.selectedIndex);
    console.log(this.selectedIndex);  
};

function how_many_days(month){
    switch (month){
        case 0:
        case 2:
        case 4:
        case 6:
        case 7:
        case 9:
        case 11:
            days_of_month=31;
            break;
        case 10:
        case 8:
        case 5:
        case 3:
            days_of_month=30;
            break;
        case 1:
            days_of_month=28;
            break;
    }
    return days_of_month;
}

function populateMonth(monthindex){



        var writeTo =document.getElementById("monthCal");


        var table123 = document.createElement("table");
        var tbody123 = document.createElement("tbody");




      var days= how_many_days(monthindex);
        var i =1;
        while(i<days){
            var j=0;
            var tableRow = document.createElement("tr");
            while(j<7){
                var tableData = document.createElement("td");
                var txtNode = document.createTextNode(i+"");
                tableData.appendChild(txtNode);
                tableRow.appendChild(tableData);
                ++j;
                ++i;
            }
            tbody123.appendChild(tableRow);
        }

        var conatiner1 = document.getElementById("monthCal");

        table123.appendChild(tbody123);
        conatiner1.appendChild(table123);


    }
Year: <input type="text" size="4" maxlength="4"/>
Month:<select id="list1">
    <option id="month1" value="Jan">January</option>
    <option id="month2" value="Feb">Feburary</option>
    <option id="month3" value="March" selected>March</option>
    <option id="month4" value="April">April</option>
    <option id="month5" value="May">May</option>
    <option id="month6" value="June">June</option>
    <option id="month7" value="July" >July</option>
    <option id="month8" value="Aug">August</option>
    <option id="month9" value="sept">September</option>
    <option id="month10" value="oct">October</option>
    <option id="month11" value="Nov">November</option>
    <option id="month12" value="Dec">December</option>
</select><hr>

<div id="monthCal">

</div>

1 个答案:

答案 0 :(得分:0)

由于你的内部循环总是变为7,你只能获得7整除的天数。你需要在需要的时候缩短内部循环,所以对i使用与外部相同的条件循环。

所以将while (j<7)更改为while ((j<7) && (i<days)),内部循环会在需要时缩短。