javascript实现考勤日历功能

 更新时间:2018年11月29日 11:44:26   作者:深蓝浅蓝的天  
这篇文章主要为大家详细介绍了javascript实现考勤日历功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

简介

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

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>

示例演示:

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

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

相关文章

  • js实现点击向下展开的下拉菜单效果代码

    js实现点击向下展开的下拉菜单效果代码

    这篇文章主要介绍了js实现点击向下展开的下拉菜单效果代码,涉及javascript鼠标事件控制页面元素样式变换的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • 微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)

    微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)

    这篇文章主要介绍了微信小程序scroll-view左侧导航栏点餐功能实现,点击种类,滚动到锚点;滚动到锚点,种类选中,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Code Review 方法论与实践总结梳理

    Code Review 方法论与实践总结梳理

    这篇文章主要为大家介绍了Code Review 方法论与实践总结梳理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • openLayer4实现动态改变标注图标

    openLayer4实现动态改变标注图标

    这篇文章主要为大家详细介绍了openLayer4实现动态改变标注图标,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Javascript实现仿QQ随机数验证

    Javascript实现仿QQ随机数验证

    这篇文章主要为大家详细介绍了Javascript实现仿QQ随机数验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 非常优秀的JS图片轮播插件Swiper的用法

    非常优秀的JS图片轮播插件Swiper的用法

    最近在一个微信公众号中用到了swiper图片轮播插件。接下来为大家介绍插件的用法,需要的朋友可以参考下
    2017-01-01
  • 一文快速学会创建uni-app项目并了解pages.json文件

    一文快速学会创建uni-app项目并了解pages.json文件

    这篇文章主要给大家介绍了如何创建uni-app项目并了解pages.json文件的相关资料,pages.json文件用来对uni-app进行全局配置,决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar等,需要的朋友可以参考下
    2023-10-10
  • ASP中进行HTML数据及JS数据编码函数

    ASP中进行HTML数据及JS数据编码函数

    在有些时候我们无法控制乱码的出现, 比如发送邮件的时候有些邮件显示乱码, 比如Ajax返回数据总是乱码. 怎么办?
    2009-11-11
  • 使用js操作css实现js改变背景图片示例

    使用js操作css实现js改变背景图片示例

    有个朋友在weibo上问我可不可以用JS和CSS让页面每次刷新随机产生一张背景图,当然是可以的。具体的方法看下面的实现代码吧
    2014-03-03
  • BootStrap 动态表单效果

    BootStrap 动态表单效果

    这篇文章主要介绍了BootStrap 动态表单效果,实现代码分为js部分和html部分,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-06-06

最新评论