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 相关文章推荐
js面向对象 多种创建对象方法小结
May 21 Javascript
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 Javascript
director.js实现前端路由使用实例
Feb 03 Javascript
jQuery操作Table技巧大汇总
Jan 23 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
Jun 17 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
Dec 15 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
Angular2入门教程之模块和组件详解
May 28 Javascript
AngularJs ng-change事件/指令的用法小结
Nov 01 Javascript
Vue中使用vux配置代码详解
Sep 16 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
Dec 12 Javascript
JavaScript 作用域scope简单汇总
Oct 23 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学习资料汇总与网址
2007/03/16 PHP
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
vuex存储token示例
2019/11/11 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python编程实现使用线性回归预测数据
2017/12/07 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
彪马法国官网:PUMA法国
2019/12/15 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
高中毕业的自我鉴定
2013/12/09 职场文书
业务员的岗位职责
2014/03/15 职场文书
新课培训心得体会
2014/09/03 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书