我使用以下代码创建了具有各种内容的各种<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
答案 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>";
}