原生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 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
May 14 Javascript
jQuery学习笔记之jQuery中的$
Jan 19 Javascript
jQuery处理json数据返回数组和输出的方法
Mar 11 Javascript
Javascript中常用的检测方法小结
Oct 08 Javascript
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 jQuery
javascript实现循环广告条效果
Dec 12 Javascript
利用vscode调试编译后的js代码详解
May 14 Javascript
深入webpack打包原理及loader和plugin的实现
May 06 Javascript
javascript实现获取中文汉字拼音首字母
May 19 Javascript
vue调用本地摄像头实现拍照功能
Aug 14 Javascript
JavaScript 实现页面滚动动画
Apr 24 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下实现伪 url 的超简单方法[转]
2007/09/24 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
详解python和matlab的优势与区别
2019/06/28 Python
Python 3.8 新功能全解
2019/07/25 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
python标记语句块使用方法总结
2019/08/05 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
联想中国官方商城:Lenovo China
2017/10/18 全球购物
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
志愿者活动总结范文
2014/04/26 职场文书
教师专业自荐信
2014/05/31 职场文书
写字楼租赁意向书
2014/07/30 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2014年体育工作总结
2014/11/24 职场文书
护士求职自荐信
2015/03/25 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
导游词之千岛湖
2019/09/23 职场文书
七年级作文之我的梦想
2019/10/16 职场文书