公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
这个标题我考究了很久,不知道如何才能起的完美。想来想去,浪费脑力,于是就随便起了一个标题。本文是一款日历控件,该日历插件可以实现待办事件的展示,并且可以获得下一月,上一月等其他月份的待办事件提醒功能。
先来看看效果:
再这里,我再次做一下声明,本文禁止任何转载。
相关实现源码如下:
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>业余草jquery日历待办事项</title> <link rel="stylesheet" href="css/master.css" type="text/css" media="screen" charset="utf-8" /> <script src="js/jquery-1.3.min.js" type="text/javascript"> </script> <script src="js/coda.js" type="text/javascript"> </script> </head> <body> <h1>业余草jquery日历待办事项</h1> <script> var i, k, today = new Date(), //获取当前日期 y = today.getFullYear(), //获取日期中的年份 m = today.getMonth(), //获取日期中的月份(需要注意的是:月份是从0开始计算,获取的值比正常月份的值少1) d = today.getDate(), //获取日期中的日(方便在建立日期表格时高亮显示当天) firstday = new Date(y, m, 1), //获取当月的第一天 dayOfWeek = firstday.getDay(), //判断第一天是星期几(返回[0-6]中的一个,0代表星期天,1代表星期一,以此类推) days_per_month = new Array(31, 28 + isLeap(y), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31), //创建月份数组 str_nums = Math.ceil((dayOfWeek + days_per_month[m]) / 7),//确定日期表格所需的行数 html=""; //判断当前年份是否是闰年(闰年2月份有29天,平年2月份只有28天) function isLeap(year) { return year % 4 == 0 ? (year % 100 != 0 ? 1 : (year % 400 == 0 ? 1 : 0)) : 0; } function prev(){ var year = y; var month = parseInt(m) -1; if (month == 0) { year = parseInt(y) - 1; month = 12; } today = new Date(year, month, 1); y = today.getFullYear(); m = today.getMonth(); d = today.getDate(); firstday = new Date(y, m, 1); dayOfWeek = firstday.getDay(); days_per_month = new Array(31, 28 + isLeap(y), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); str_nums = Math.ceil((dayOfWeek + days_per_month[m]) / 7); $('p').remove(); $('table').remove(); // 重新生成日历 loadCal(); } function next(){ var year = y; var month = parseInt(m) + 1; if (month == 13) { year = parseInt(y) + 1; month = 1; } today = new Date(year, month, 1); y = today.getFullYear(); m = today.getMonth(); d = today.getDate(); firstday = new Date(y, m, 1); dayOfWeek = firstday.getDay(); days_per_month = new Array(31, 28 + isLeap(y), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); str_nums = Math.ceil((dayOfWeek + days_per_month[m]) / 7); $('p').remove(); $('table').remove(); // 重新生成日历 loadCal(); } function loadCal(){ html=""; html += "<p style='vertical-align:middle;font-size:20px;'><img src='img/left.png' onclick='prev();'/>" +" <span><strong>" + y + "年" + (m + 1) + "月" + "</strong></span>" +" <img src='img/right.png' onclick='next();'/></p>"; html += "<table cellspacing='0'>"; //打印表格第一行(显示星期) html += "<tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>"; var arr = [ 6, 8, 16,18, 26, 28 ]; //有待办事件的日期 for(i = 0; i < str_nums; i += 1) { //二维数组创建日期表格 html += '<tr>'; for(k = 0; k < 7; k++) { var idx = 7 * i + k; //为每个表格创建索引,从0开始 var date = idx - dayOfWeek + 1; //将当月的1号与星期进行匹配 (date <= 0 || date > days_per_month[m]) ? date = ' ': date = idx - dayOfWeek + 1; //索引小于等于0或者大于月份最大值就用空表格代替 //date == d ? document.write('<td class="today">' + date + '</td>') : document.write('<td>' + date + '</td>'); //高亮显示当天 if($.inArray(date, arr)>-1){ html += '<td class="date_has_event">' + date + '<div class="events"><ul><li>' +'<span class="title">待办事件1</span><span class="desc">业余草:www.xttblog.com</span>' +'</li><li><span class="title">待办事件2</span><span class="desc">业余草:www.xttblog.com' +'</span></li></ul></div></td>'; }else if(date == d){ html += '<td class="today">' + date + '</td>'; //高亮显示当天 }else{ html += '<td>' + date + '</td>'; } } html += '</tr>'; } html += '</table>'; $("body").append(html) //也加不进去 } loadCal(); </script> </body> </html>
源代码已共享到百度网盘,链接:http://pan.baidu.com/s/1pKASTUb 密码:3nk4
目前只是在谷歌,火狐等浏览器下测试通过。有兴趣的可以在ie下测试测试,并修复一些兼容性。
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » 业余草教你实现日历待办任务展示万年历