练习一个日历例子,输出一个日历,显示当前日期为红色
主要的理解和掌握点是:
使用Date()函数
根据天数计算日历的长度,主要是行,因为列是固定的,一周只有7天
根据天数计算各天放置的单元格位置
每月第一天的特殊处理
很多时候是从索引0开始计算,例如0-11代表12个月之类
一个包括12个月的天数的数组
效果图:
日一二三四五六12345678910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
代码:
function is_leap(year) { return (year % 100 == 0 ? res = (year % 400 == 0 ? 1 : 0) : res = (year % 4 == 0 ? 1 : 0)); } //是否为闰年 var nstr = new Date(); //当前Date资讯 var ynow = nstr.getFullYear(); //年份 var mnow = nstr.getMonth(); //月份 var dnow = nstr.getDate(); //今日日期 var n1str = new Date(ynow, mnow, 1); //传入获取到的年月,并且日设置为1,获取当月的第一天的日期信息 var firstday = n1str.getDay(); //当月第一天星期几 var m_days = new Array(31, 28 + is_leap(ynow), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); //各月份的总天数 //月份天数+第一天星期几 除以7,获取整数行数,然后取整,得到表格所需要行数,即这个月的天数需要排多少行 var tr_str = Math.ceil((m_days[mnow] + firstday) / 7); //打印表格第一行(有星期标志)(表头) document.write("

日一二三四五六
"); //举例是2016年12月,有31天for (var i = 0; i