2014-10-01 58 views
1

我用普通的javascript构建了一个网络日历,我被卡在显示<td></td>中的数字,并在7列之后停止它们。在日历行/列中添加天数

到目前为止,我拥有所有我需要的数据,但是我无法在HTML中显示它们。 我的问题是:

  • 我一直只创建一个<tr></tr>,而不是6(月最大周)
  • 我显示我的<tr><td></td></tr>,而不是内部后的数字。

我认为这主要是如何将元素插入到HTML中。任何建议真的很感激。

代码:

window.wca = {}; 

(function() { 
    wca.today = new Date(); 
    createCalendar(); 

function createCalendar(){ 
    wca.currentYear = wca.today.getFullYear(); 
    wca.currentMonth = wca.today.getMonth(); //month in number 
    wca.currentDayOfWeek = wca.today.getDay(); 
    wca.firstDay = new Date(wca.currentYear, wca.currentMonth, 1); //first day of current month 
    wca.firstDayOfWeek = daysLabel[wca.firstDay.getDay()]; // first dayOfTheWeek of current month 
    wca.showMonth = monthNamesArray[wca.currentMonth]; //current month string 
    wca.showWeekDay = daysLabel[wca.currentDayOfWeek]; //current day of the week 
    wca.totDayInMonth = daysPerMonth[wca.currentMonth]; //how many days are in the current month 

    //Leap years 
    if (wca.currentMonth == 1) { // February 
     if((wca.currentYear % 4 == 0 && wca.currentYear % 100 != 0) || wca.currentYear % 400 == 0){ 
      wca.totDayInMonth = 29; 
     } 
    } 

    var Htmltable = document.getElementById('table'); 
    var year = document.getElementById('year'); 
    var month = document.getElementById('month'); 
    var daysOfWeek = document.getElementById('days-of-week'); 


    year.innerHTML = '<td>'+ wca.currentYear +'</td>'; 
    month.innerHTML = '<td>'+ wca.showMonth +'</td>'; 
    for(i = 0; i < daysLabel.length; i++) 
     daysOfWeek.innerHTML = daysOfWeek.innerHTML + '<td>'+ daysLabel[i] +'</td>'; 

    Htmltable.innerHTML += '<tr id="days-row">'; 
    var daysRow = document.getElementById('days-row'); 

    var day = 1; 
    for(i = 1; i <= 6; i++){ //weeks in a month (rows) 
     for(j = 0; j <= 6; j++){ //7 days in a week (coloumns) 
      daysRow.innerHTML += '<td>'; 
      if(day <= wca.totDayInMonth){ 
       daysRow.innerHTML += day; 
       day++; 
      } 
      daysRow.innerHTML += '</td>'; 
     } 
     //if day > totDayMonth - stop making line 
    } 
    Htmltable.innerHTML += '</tr>'; 

} 
})(); 

HTML:

<table> 
    <tbody id="table"> 
     <tr id="year"></tr> 
     <tr id="month"></tr> 
     <tr id="days-of-week"></tr> 
    </tbody> 
</table> 
+0

哪个月有六个星期? ??你还没有分配一个ID到表..什么是daysRow?什么是wca? – 2014-10-01 11:58:44

+0

任何月份可以有6个星期...除了二月我猜... – EasyPush 2014-10-01 12:00:26

+0

一周有7天(至少在我住的世界上)和一个月有最多31天.. 31/7 => 4周。你住在哪里? – 2014-10-01 12:02:27

回答

0

这真的很难猜测有什么问题,有没有更完整的例子。 可能是原因的一个原因是空单元正在崩溃。此外,我已经感动的innerHTML的HTML变量,附加只是一次..

用于补偿试试这个代码被添加非打破空间空单元:

var Htmltable = document.getElementById('table'); 
var day = 1; 
var html = ''; 
    for(i = 1; i <= 6; i++){ //weeks in a month (rows) 
     html += '<tr>'; 
     for(j = 0; j <= 6; j++){ //7 days in a week (coloumns) 
      html += '<td>'; 
      if(day <= wca.totDayInMonth){ 
       html += day; 
       day++; 
      } else { 
       html += "&nbsp;"; 
      } 
      html += '</td>'; 
     } 
     //if day > totDayMonth - stop making line 
     html += '</tr>'; 
    } 
    Htmltable.innerHTML += html; 
+0

daysRow是什么?什么是wca?哪一周有6个月?在提出解决方案之前,首先更好地理解问题! – 2014-10-01 12:00:58

+0

真的吗? ..这是真的,他们对批评家说..做评论比提出一个解决方案更容易,一起工作,以帮助人们 – 2014-10-01 12:04:40

+0

我想在问题的评论部分一起工作..当你张贴'回答'这意味着这是解决你的问题..你的解决方案显然不是。你在评论部分给出了一个意见,但不喜欢,在这里..这是你的问题的答案。 – 2014-10-01 12:07:24