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 相关文章推荐
XML+XSL 与 HTML 两种方案的结合
Apr 22 Javascript
Jquery如何实现点击时高亮显示代码
Jan 22 Javascript
js从Cookies里面取值的简单实现
Jun 30 Javascript
jQuery基础语法实例入门
Dec 23 Javascript
详解Angular.js中$http拦截器的介绍及使用
Jul 04 Javascript
React Native使用百度Echarts显示图表的示例代码
Nov 07 Javascript
原生JS实现简单的倒计时功能示例
Aug 30 Javascript
Bootstrap实现省市区三级联动(亲测可用)
Jul 26 Javascript
详解Vue2.5+迁移至Typescript指南
Aug 01 Javascript
Vue 权限控制的两种方法(路由验证)
Aug 16 Javascript
layui禁用侧边导航栏点击事件的解决方法
Sep 25 Javascript
解决Layui数据表格的宽高问题
Sep 28 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下载CSS文件中的图片的代码
2013/09/24 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
python lxml中etree的简单应用
2019/05/10 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
Python 如何批量更新已安装的库
2020/05/26 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
面试后感谢信怎么写
2014/02/01 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
小学信息技术教学反思
2016/02/16 职场文书