JS实现简易日历效果


Posted in Javascript onJanuary 25, 2021

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

JS实现简易日历效果

JS实现简易日历效果

css

* {
  margin: 0;
  padding: 0;
  list-style: none;
 }

 #box {
  width: 280px;
  height: 360px;
  margin: 50px auto;
  background-color: black;
  color: aliceblue;
  line-height: 40px;
 }

 #header {
  height: 40px;
  color: aliceblue;
  line-height: 40px;
 }

 #header span {
  float: left;
  text-align: center;
  margin-top: 10px;
  line-height: 40px;
 }

 #prev,
 #next {
  width: 20%;
  line-height: 40px;
  cursor: pointer;
 }

 #current {
  width: 60%;
  line-height: 40px;
 }

 #week li {
  width: 40px;
  text-align: center;
  float: left;
  line-height: 40px;
 }

 #content li {
  width: 40px;
  text-align: center;
  float: left;
  line-height: 40px;
}

html

<div id="box">
 <div id="header">
  <span id="prev">上</span>
  <span id="current"></span>
  <span id="next">下</span>
 </div>
 <ul id="week">
  <li>日</li>
  <li>一</li>
  <li>二</li>
  <li>三</li>
  <li>四</li>
  <li>五</li>
  <li>六</li>
 </ul>
 <ul id="content">
  <!-- <li>31</li>
    <li>1</li>
    <li>2</li> -->
 </ul>
</div>```

js

var current = document.querySelector('#current');//月份name
 var prev = document.querySelector('#prev'); // 上个月
 var next = document.querySelector('#next'); // 下个月
 var content = document.querySelector('#content'); // 日期内容

 // 上个月要显示的天数
 // 求出本月第一天是星期几
 // 求出上个月最大的天数 把日期设为0
 function getPrevDays(date) {
  var date = new Date(date);
  // 把日期设为第一天,为了获取第一天是星期几
  date.setDate(1);
  var week = date.getDay();
  // 把日期设为0,为了得到上个月的最后一天
  date.setDate(0);
  var maxDay = date.getDate();
  var list = [];
  // 遍历红色日期的范围 push进数组
  for (var i = maxDay - week + 1; i <= maxDay; i++) {
  list.push(i);
  }
  return list;
 }


 // 求本月的天数
 // 月份推到下个月
 // 日期设为0
 function getNowDays(date) {
  var date = new Date(date);
  date.setMonth(date.getMonth() + 1);
  date.setDate(0);
  var maxDay = date.getDate();
  // console.log(maxDay)
  var list = [];
  // 
  for (var i = 1; i <= maxDay; i++) {
  list.push(i)
  }
  return list;
 }



 // 下个月要显示的天数
 function getNextDays(prevDays, nowDays) {
  var list = [];
  // 一页日历42天,42 - 上月天数 - 这个月天数 = 最后显示剩余的下个月天数
  for (var i = 1; i <= 42 - prevDays - nowDays; i++) {
  list.push(i)
  }
  return list
 }

 var x = 1;
 // 封装输出日期内容
 // x记录点击月份 根据月份 上面数组自动获取当月要显示的时间
 function output(x) {
  arr1 = getPrevDays('2021-' + x);
  arr2 = getNowDays('2021-' + x);
  arr3 = getNextDays(arr1.length, arr2.length);
  // console.log(arr2);
  var res = '';
  for (var i = 0; i < arr1.length; i++) {
  res += '<li style="color:red;">';
  res += arr1[i];
  res += '</li>';
  }

  for (var i = 0; i < arr2.length; i++) {
  res += '<li>';
  res += arr2[i];
  res += '</li>';
  }

  for (var i = 0; i < arr3.length; i++) {
  res += '<li style="color:red;">';
  res += arr3[i];
  res += '</li>';
  }
  // 三个数组输出结果拼接起来 输出
  return content.innerHTML = res;
 }




 // 输出月份显示
 var date = new Date();
 current.innerHTML = showMonth(new Date());
 // 月份
 function showMonth(date) {
  var date = new Date(date);
  date.setMonth(date.getMonth());
  var mon = date.getMonth();
  // var year = date.getFullyear();
  return (mon + 1) + '月';
 }

 output(x);
 // 下个月
 next.onclick = function () {
  x++;
  // console.log(x);
  if (x > 12) {
  x = 1;
  output(x);
  } else {
  current.innerHTML = showMonth('2021-' + x);
  output(x);
  }
 }

 // 上个月
 prev.onclick = function () {
  x--;
  console.log(x);
  if (x < 1) {
  x = 12;
  current.innerHTML = showMonth('2021-' + x);
  output(x);
  } else {
  current.innerHTML = showMonth('2021-' + x);
  output(x);
  }
 }

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

Javascript 相关文章推荐
经常用的图片在容器中的水平垂直居中实例
Jun 10 Javascript
js 动态选中下拉框
Nov 26 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
Feb 05 Javascript
详解JS 比较两个Json对象的值是否相等的实例
Nov 20 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
Nov 25 Javascript
jQuery EasyUI Draggable拖动组件
Mar 01 Javascript
Angular @HostBinding()和@HostListener()用法
Mar 05 Javascript
vue.js获得当前元素的文字信息方法
Mar 09 Javascript
解决Vue+Element ui开发中碰到的IE问题
Sep 03 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
Jun 18 Javascript
微信小程序sessionid不一致问题解决
Aug 30 Javascript
javascript代码实现简易计算器
Jan 25 #Javascript
js简单粗暴的发布订阅示例代码
Jan 23 #Javascript
JS中循环遍历数组的四种方式总结
Jan 23 #Javascript
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 #Vue.js
原生js实现自定义难度的扫雷游戏
Jan 22 #Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 #Javascript
js canvas实现五子棋小游戏
Jan 22 #Javascript
You might like
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
百度留言本js 大家可以参考下
2009/10/13 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
一套英文Java笔试题面试题
2016/04/21 面试题
2014年党总支工作总结
2014/12/18 职场文书
三年级学生评语大全
2014/12/26 职场文书
审美与表现自我评价
2015/03/09 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
高质量“欢迎词”
2019/04/03 职场文书
PHP判断是否是json字符串
2021/04/01 PHP