写日历的时候第一个纠结地方是用ul li 仍是直接用table,两种方式都试了一下,仍是选择了ul li,讲真table有时候不太好操做。数组
开始js吧。第一点,简单的标题,周日 周一。。。。这个顺序是以‘周日’开始仍是‘周一’,在后面会有影响的。函数
var weekName = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; blog
定义个数组来存吧。接口
这些都是准备好的东西,固然代码有点坑,写得比较烂,也没有改改。get
而后咱们再for循环来存weekNameit
后面就是日期代码了,首先获取当前时间,用来得到当前年,月for循环
var currentDate = new Date();table
var currentYear = time.getFullYear(), currentMonth = time.getMonth();//获取当前年、月date
而后咱们就要想,每月多少天这个确定得获取到,可是Date没有直接提供接口让咱们获取,而后2月的天数也是不固定的,因而经过年来判断天数,而且定义个数组来存放每月的天数。循环
获取到这个,咱们还得获得一个重要的东西,每月的开始是星期几,还好咱们能根据getDay()来获得
var initDate = new Date(currentYear, currentMonth, 1);
var firstDay = initDate.getDay();//获取当前月第一天是周几0、一、二、三、4....
随后咱们得循环输出日历,但是咱们要怎么开始,咱们想,若第一天是周日对应的firstDay是0,那么咱们应该是1号,如果周一则firstDay是1以此类推会加一
因而会 var date_str = i - firstDay + 1; i是for循环的N值
本日历是固定的6行,如有不一样需求自行判断。且忽略ul li什么什么的。。。
至此,基本就完成了。
再加两个上一个月,下一个月方法,注意月份的正确性,由于我这里要传函数里再取一次,因此下一个月的时候得多加一个月,相反,上一个月不用变就好