每x个元素都附加元素?

时间:2013-01-17 01:26:05

标签: javascript jquery

我使用以下代码创建了具有各种内容的各种<td>标记:

for (var i = 0 - dOW; i < dIM; i++) {
    var day = i + 1;
    if (day > 0) {
        if (day === d) {
            $("#calendar").append("<td>[" + day + "]</td>");
        } else {
            $("#calendar").append("<td>" + day + "</td>");
        }
    } else {
        $("#calendar").append("<td>s</td>");
    }
}

结果如下:

  

s s 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

有没有办法在<tr>标记中包含每7个元素,以便HTML可以:

<tr>
  <td>s</td>
  <td>s</td>
  <td>1</td>
  <td>2</td>
  <td>3</td>
  <td>4</td>
  <td>5</td>
</tr>
...

完整代码:

function calendar(d){   
    var t = new Date(d);                        // Today [Wed Jan 16 2013 00:00:00 GMT-0500 (EST)]
    var d = t.getDate();                        // Today's date (1-31) [16]
    var y = t.getFullYear();                    // Full year [2013]
    var m = t.getMonth();                       // Month (0-11) [0]
    var mN = [                                  // Month name array (0-11)
                "January", 
                "February", 
                "March",
                "April",
                "May",
                "June",
                "July",
                "August",
                "September",
                "October",
                "November",
                "December"
              ];
    var fM = mN[m];                             // Full month name [January]
    var dIM = new Date(y, m + 1, 0).getDate();  // Number of days in current month (1-31) [31]
    var dOW = new Date(y, m, 1).getDay();       // Day of the first day of the month (0-6) [2]
    var nOW = Math.ceil((dIM + dOW) / 7);       // Number of weeks in the month, including space [5]


            for (var i = 0 - dOW; i < dIM; i++){
                var day = i + 1;
                if (day > 0){
                    if (day === d){
                        $("#calendar").append("<td>[" + day + "]</td>");
                    } else {
                        $("#calendar").append("<td>" + day + "</td>");
                    }
                } else {
                    $("#calendar").append("<td>s</td>");
                }
            }

    }


// "1 March 2013"
calendar(new Date());

到目前为止,我已经尝试将它分成两个for循环,一个设置为行数,另一个设置为列,但是这不允许我使用{{1允许我放入spacer div的语句:

if

3 个答案:

答案 0 :(得分:5)

在创建所有<tr>后,我可以建议同时执行这两项操作,而不是创建<td>吗?

var count = 0, $row;

for (var i = 0 - dOW; i < dIM; i++) {
    var day = i + 1;
    if (count % 7 === 0) {
        $row = $('<tr />').appendTo('#calendar');
    }
    if (day > 0) {
        if (day === d) {
            $row.append("<td>[" + day + "]</td>");
        } else {
            $row.append("<td>" + day + "</td>");
        }
    } else {
        $row.append("<td>s</td>");
    }
    count++;
}

答案 1 :(得分:2)

使用嵌套for循环。

var dynamicTable= '<table cellspacing="10"';
for (i = 0; i < 10; i ++)
{
  dynamicTable+= "<tr>";
  var row = i;
  row += 1;
  for (j = 0; j < 10; j++)
  {
      var col = j;
      col += 1;
      dynamicTable += '<td>';
               dynamicTable += "x";// cell text
      dynamicTable += '</td>';
  }
  dynamicTable += '</tr>';
}
dynamicTable+= '</table>';

答案 2 :(得分:1)

这是一个代码:

var arr=$("#calendar").val();
var htmlCode="";
int length=arr.length;
for(var i=0;i<length/7;i++)
{
   htmlCode+="<tr>";
   for(var j=i*7;j<i*7 + 7 ; j++) 
   {
      htmlCode+="<td>"+arr[j]+"</td>";
   }
   htmlCode+="</tr>";
}