原生js实现日历效果


Posted in Javascript onMarch 02, 2020

本文实例为大家分享了js实现日历效果的具体代码,供大家参考,具体内容如下

html代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>日历插件</title>
 <link rel="stylesheet" href="./css/reset.css" >
 <link rel="stylesheet" href="./css/index.css" >
</head>
<body>
 <div class="show">
 <button id="pre">上月</button>
 <span id="showtime">2019-01</span>
 <button id="next">下月</button>
 </div>
 <div class="box" id="box">
 </div>
</body>
<script>
 // 获取本月第一天
 function getMonthDay(date){
 date=new Date(date.valueOf())
 date.setDate(1);
 return date
 }
 // 获取本月最后一天
 function getMonthLastDay(date){
 date=new Date(date.valueOf())
 date.setMonth(date.getMonth()+1);
 date.setDate(0);
 return date
 }
 //获取本月的时间对象集合
 function getMonth(date){
 var arr=[]
 // 获取本月第一天
 var _date=getMonthDay(date)
 // // 获取本月最后一天
 var dataLast=getMonthLastDay(date).getDate()
 arr.push(new Date(_date.valueOf()))
 // 处理本月第一天 到本月最后一天
 for(var i =1;i<dataLast;i++){
  _date.setDate(_date.getDate()+1)
  arr.push(new Date(_date.valueOf()))
 }
 // 向前补全,重置为本月一号
 _date=getMonthDay(date)
 var forln=_date.getDay()
 for(var i=0;i<forln;i++){
  _date.setDate(_date.getDate()-1)
  arr.unshift(new Date(_date.valueOf()))
 }
 // 向后补全,重置为本月最后一天
 _date=getMonthLastDay(date)
 forln=_date.getDay()
 for(var i=forln;i<6;i++){
  _date.setDate(_date.getDate()+1)
  arr.push(new Date(_date.valueOf()))
 }
 return arr
 }
 // 将集合渲染到页面
 function renderTable(monthDateArr,date){
 document.getElementById("showtime").innerHTML=`${date.getFullYear()}-${date.getMonth()+1}`
 var table=document.createElement('table')
 var trTh=document.createElement('tr')
 trTh.innerHTML=`
  <th>周日</th>
  <th>周一</th>
  <th>周二</th>
  <th>周三</th>
  <th>周四</th>
  <th>周五</th>
  <th>周六</th>
 `
 table.appendChild(trTh)
 var tr=document.createElement('tr')
 for(let i in monthDateArr){
  var td=document.createElement('td')
  td.innerHTML=monthDateArr[i].getDate()
  tr.appendChild(td)
  if((i*1+1)%7===0){
  table.appendChild(tr)
  tr=document.createElement('tr')
  }else if(i == monthDateArr.length-1){
  table.appendChild(tr)
  }
 }
 document.getElementById("box").innerHTML=table.outerHTML
 }
 var date=new Date()
 document.getElementById('pre').onclick=function(){
 date.setDate(1)
 date.setMonth(date.getMonth()-1)
 renderTable(getMonth(date),date)
 }
 document.getElementById('next').onclick=function(){
 date.setDate(1)
 date.setMonth(date.getMonth()+1)
 rrenderTable(getMonth(date),date)
 }
 renderTable(getMonth(date),date)
 
</script>
</html>

css代码

.box{
 width: 700px;
 margin: 0 auto;
 box-sizing: border-box;
 padding: 0 1px;
}
table{
 width: 100%;
}
th,td{
 width:100px;
 text-align: center;
}
th{
 height: 30px;
 line-height: 30px;
 background: #e0e5e5;
}
td{
 height: 70px;
 line-height: 70px;
 background: #f3f5f5;
}
.show{
 display: flex;
 align-items: center;
 justify-content: center;
}

更多精彩内容请点击专题《javascript日历插件使用方法汇总》进行学习

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

Javascript 相关文章推荐
js实现双向链表互联网机顶盒实战应用实现
Oct 28 Javascript
JavaScript判断textarea值是否为空并给出相应提示
Sep 04 Javascript
JavaScript组件焦点与页内锚点间传值的方法
Feb 02 Javascript
javascript日期验证之输入日期大于等于当前日期
Dec 13 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
JS中去掉array中重复元素的方法
May 26 Javascript
vue-cli V3.0版本的使用详解
Oct 24 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
Sep 21 Javascript
JS Ajax请求会话过期处理问题解决方法分析
Nov 16 Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
Mar 02 #Javascript
详解Vue中的Props与Data细微差别
Mar 02 #Javascript
微信小程序实现音频文件播放进度的实例代码
Mar 02 #Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 #Javascript
vue学习笔记之slot插槽用法实例分析
Feb 29 #Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 #Javascript
Vue组件化开发之通用型弹出框的实现
Feb 28 #Javascript
You might like
php字符串截取的简单方法
2013/07/04 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
初学JavaScript第二章
2008/09/30 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
我们的节日国庆活动方案
2014/08/19 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
校长新学期致辞
2015/07/30 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript