我需要打印月份日历,从月份的下拉选择选项中选择。我使用双循环来创建表格(一个用于行,第二个用于填充行数天)。问题是我的代码是所有月份的打印天数高达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>
答案 0 :(得分:0)
由于你的内部循环总是变为7,你只能获得7整除的天数。你需要在需要的时候缩短内部循环,所以对i
使用与外部相同的条件循环。
所以将while (j<7)
更改为while ((j<7) && (i<days))
,内部循环会在需要时缩短。