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 相关文章推荐
javascript 数据类型转换(parseInt,parseFloat)
Jul 20 Javascript
仿新浪微博返回顶部的jquery实现代码
Oct 01 Javascript
js正则表达式的使用详解
Jul 09 Javascript
在父页面调用子页面的JS方法
Sep 29 Javascript
jQuery oLoader实现的加载图片和页面效果
Mar 14 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
Sep 14 Javascript
Javascript实现的SHA-256加密算法完整实例
Feb 02 Javascript
微信小程序 自己制作小组件实例详解
Dec 22 Javascript
JavaScript 函数节流详解及方法总结
Feb 09 Javascript
mpvue跳转页面及注意事项
Aug 03 Javascript
vue中利用iscroll.js解决pc端滚动问题
Feb 15 Javascript
JavaScript交换变量的常用方法小结【4种方法】
May 07 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
PHP自动选择 连接本地还是远程数据库
2010/12/02 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
原生js轮播特效
2017/05/18 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
详解Python中for循环的使用方法
2015/05/14 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
python使用fork实现守护进程的方法
2017/11/16 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
python模糊图片过滤的方法
2018/12/14 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
Python super()函数使用及多重继承
2020/05/06 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
.NET现在共支持多少种语言
2014/02/26 面试题
介绍一下Python中webbrowser的用法
2013/05/07 面试题
领导视察欢迎词
2014/01/15 职场文书
教职工代表大会主持词
2014/04/01 职场文书
年终工作总结范文2014
2014/11/27 职场文书
情人节活动总结范文
2015/02/05 职场文书
公开致歉信
2019/06/24 职场文书
Rust中的Struct使用示例详解
2022/08/14 Javascript