们将重复一星期中的七天并且将他们打印在日历的下一行:
// create first row of table to set column width and specify week day
text += '<TR ALIGN="center" VALIGN="center">';
for (var dayNum = 0; dayNum < 7; ++dayNum) {
text += openCol + weekDay[dayNum] + closeCol ;
}
text += '</TR>';
我们通过一个双重循环打印当月的日期。外部循环重复产生日历的行,我们从第一行到第Math.ceil((lastDate +
firstDay - 1) / 7)行。花点时间确信您的数学还好,比如:如果今天是星期四,firstday是5,要求的月份是六月,所以
lastDate是30。行数是(5 + 30 -1)/7 即34/7即4到5之间,这种情况下Math.ceil()将得到5。内部循环重复遍历一星期的七
天,以下是双重循环程序段:
// declaration and initialization of two variables to help with tables
var dayOfMonth = 1;
var curCell = 1;
for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
text += '<TR ALIGN="right" VALIGN="top">';
for (var col = 1; col <= 7; ++col) {
现在我们做个决定,首先:一些单元根本不属于该月,即当月第一天前的和当月最后一天后的,我们只是跳过这些
单元:
if ((curCell < firstDay) || (dayOfMonth > lastDate)) {
text += '';
curCell++;
} else {
这些单元将被格式为和我们指定给TAG标记的确省样式一致的格式。我们设置TD标志的样式如下:
<STYLE>
TD {
background-color:tan;
width:50;
height:50;
}
</STYLE>
注意不属于该月的单元都是黄褐色的
第二个决定是:我们怎么打印当天的日期,这里我们调用TODAY HTML组件的DAY自定义标记,将该月的日期传给它的
value属性。
if (dayOfMonth == date) { // current cell represents today's date
text += '<TD><TODAY:DAY value=' + dayOfMonth + '></TODAY:DAY></TD>';
} else {
最后一个选择是打印该月中其他的所有天的日期。我们调用ANYDAY HTML组件的DAY自定义标记,象上面一样将该月的
日期传它的value属性。
text += '<TD><ANYDAY:DAY value=' + dayOfMonth + '></ANYDAY:DAY></TD>';
最后我们要结束循环。在每个星期遍历结尾我们递增dayOfTheMonth,在每行的结束我们需要增加一个TR标记,在双重
循环的结束我们需要结束表格,并且输出并打印text变量。
}
dayOfMonth++;
}
}
text += '</TR>';
}
// close all basic table tags
text += '</TABLE>';
text += '</CENTER>';
// print accumulative HTML string
document.write(text);
}
上一页 [1] [2]