2015-08-23 68 views
0

我需要打印月份日曆,從下拉列表中選擇月份選項。我使用double while循環創建表格(一個用於行,第二個用於填充具有天數的行) 。問題是我的代碼打印天數達到35個月,除了2月份的28個月外。在javaScript中打印超過所需值的循環內的循環

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

'while(j <7)'將始終做7個單元格。你還需要在那裏添加一個條件,以便在最後停止。 –

+0

#Sami感謝您的快速響應,但我會非常感激,如果你給我的代碼片段.. –

+0

使用相同的條件爲'我'在外部循環,並結合運營商,那麼它將停止正確。 –

回答

0

因爲你的內部循環總是會去7,你只會得到天整除的數由7你不得不削減內環短期需要的時候,所以使用相同的條件爲i在外部循環。

因此,將while (j<7)更改爲while ((j<7) && (i<days)),並在需要時縮短內環。

+0

thnks親愛的它爲我工作..但在這裏2月的一個小問題它仍然打印28天(閏年)。 –