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 创建对象
Jul 17 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
Sep 29 Javascript
jQuery库与其他JS库冲突的解决办法
Feb 07 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
May 05 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 Javascript
Angular+Node生成随机数的方法
Jun 16 Javascript
从parcel.js打包出错到选择nvm的全部过程
Jan 23 Javascript
Vue实现表格中对数据进行转换、处理的方法
Sep 06 Javascript
Flutter实现仿微信底部菜单栏功能
Sep 18 Javascript
layui form表单提交后实现自动刷新
Oct 25 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 Javascript
javascript实现时钟动画
Dec 03 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
Django中Middleware中的函数详解
2019/07/18 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
"序列点" 是什么
2016/07/29 面试题
房产销售经理职责
2013/12/20 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
军训拉歌口号
2014/06/13 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
php引用传递
2021/04/01 PHP
给numpy.array增加维度的超简单方法
2021/06/02 Python