javascript实现考勤日历功能


Posted in Javascript onNovember 29, 2018

简介

用过一些开源的日历,但对于自定义去绑定数据在日历元素中却不是很方便,由于工作需要用到考勤日历,考虑到日历的实现也不是特别麻烦,于是自己弄了一个,样式比较简单,需要的可以自己去扩展。使用的时候绑定获取数据的方法即可,在这个日历中我没有直接添加选择月份。各位有兴趣可以自己扩展,已预留设置日期的方法。自定义去扩展的时候注意保证原有的代码结构不变,增加一些方法即可,下面直接上源码了,就三个文件。

attendanceCalendar.js

代码已更新多次,请直接上github下载,链接

修复 第一行日期数量计算 bug,修改了以下的方法

function initCalendarBody() {
  $content = document.createElement("div");
  addClass($content, "div_calendar_body");
  $elem.appendChild($content);
  addCalendarHead();

  //日期计算bug,例:2017-01
  var num = 0;
  do {
   var length = 0;
   if (num == 0) {
    //出星期天外,星期数(1~6)和第一行显示的日期数(7~2),相加的结果都为8
    length = firstWeekDay == 0 ? 1 : 8 - firstWeekDay;
    num = length;
    createLine(length - 1, 1);
   }
   else {
    var length = mds - num > 6 ? 7 : mds - num;
    num = num + length;
    createLine(length - 1);
   }
  }
  while (num < mds)
  showCurrentDate();
 }

 function createLine(num, type) {
  var newDiv = document.createElement("div");
  for (var i = 0; i <= num; i++, index++) {
   var span = document.createElement("span");
   var span_text = document.createTextNode(index + 1);
   //单个日期元素的操作
   if (attendances && attendances.length > 0) {
    bindAttendance(span, attendances[index]);
   }
   span.appendChild(span_text);
   newDiv.appendChild(span);
  }
  if (type == 1) {
   addClass(newDiv, "first_div")
  }
  else {
   addClass(newDiv, "last_div")
  }
  $content.appendChild(newDiv);
 }

css部分,日期元素主要用了三种颜色表示

.div_calendar {
 width: 450px;
 margin: 0 auto;
 text-align: center;
 display: -webkit-box;
}

/** 日历标题 */
.div_calendar_title {
 width: 450px;
 margin: 0 auto;
 text-align: center;
}

/** 日历主体 */
.div_calendar_body {
 width: 350px;
 text-align: center;
}

/** 日元素 */
.div_calendar span {
 width: 50px;
 display: inline-block;
 text-align: center;
 line-height: 50px;
}

/** 正常 */
.div_calendar span.normal {
 color: blue;
}

/** 迟到 */
.div_calendar span.late {
 color: red;
}

/** 缺勤 */
.div_calendar span.absense {
 color: #666;
}

/** 缺勤 */
.div_calendar span.today {
 border-radius: 50%;
 background: cornflowerblue;
}

/** 日历第一行日期 */
.div_calendar .first_div {
 text-align: right;
}

/** 日历末行日期 */
.div_calendar .last_div {
 text-align: left;
}

/** 日期显示div */
.div_calendar .div_currentDate {
 text-align: right;
}

.div_calendar .changeDate {
 cursor: pointer;
}

.div_calendar .div_currentDate span {
 width: inherit;
}

.div_calendar .div_currentDate span em {
 margin: 5px;
}

calendar.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="div_calendar_title"><h1>自定义日历</h1></div>
<div id="calendar_div" class="div_calendar">
</div>
<script src="script/attendanceCalendar.js"></script>
</body>
</html>

示例演示:

javascript实现考勤日历功能

代码已更新多次,请直接上github下载,链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
新老版本juqery获取radio对象的方法
Mar 01 Javascript
复选框全选与全不选操作实现思路
Aug 18 Javascript
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
一个简单的jquery的多选下拉框(自写)
May 05 Javascript
javascript实现超炫的向上滑行菜单实例
Aug 03 Javascript
javascript与Python快速排序实例对比
Aug 10 Javascript
JS实现的5级联动Select下拉选择框实例
Aug 17 Javascript
jQuery解决浏览器兼容性问题案例分析
Apr 15 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
May 05 Javascript
喜大普奔!jQuery发布 3.0 最终版
Jun 12 Javascript
jQuery实现广告条滚动效果
Aug 22 jQuery
js代码编写无缝轮播图
Sep 13 Javascript
vsCode安装使用教程和插件安装方法
Aug 24 #Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
Nov 29 #Javascript
简述vue路由打开一个新的窗口的方法
Nov 29 #Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
Nov 29 #Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 #Javascript
vue实现双向绑定和依赖收集遇到的坑
Nov 29 #Javascript
js中this的指向问题归纳总结
Nov 28 #Javascript
You might like
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
js继承的实现代码
2010/08/05 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
python中format函数如何使用
2020/06/22 Python
本科生详细的自我评价
2013/09/19 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
领导接待方案
2014/03/13 职场文书
低碳环保口号
2014/06/12 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
2014年科协工作总结
2014/12/09 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
污染环境建议书
2015/09/14 职场文书
Python编写冷笑话生成器
2022/04/20 Python
详解如何使用Nginx解决跨域问题
2022/05/06 Servers