jquery实现简单每周轮换的日历


Posted in jQuery onSeptember 10, 2020

本文实例为大家分享了jquery实现简单每周轮换日历的具体代码,供大家参考,具体内容如下

先放出一张示例图

jquery实现简单每周轮换的日历

在进入页面时自动获取本地时间并激活(示例为2020年9月8日),再点击左按钮时倒退一周,右按钮前进一周。鼠标点击其中li标签时激活并在上方日期显示。

jquery实现简单每周轮换的日历

一个很简单的小日历,主要是项目中经常会使用到就单独拿出来写个demo。具体思路是,获取当前本地日期并推断出周一和周日进而获得本周全部的日期,真正存放的是一个长度为7的时间戳数组,只是显示的是日期,因为我认为利用时间戳做大部分处理比较直接简单。如果有更好思路的小伙伴欢迎批评。下面放出代码。

HTML

<div id="app">
 <div class="title"></div>
 <div class="left"><</div>
 <ul>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
 </ul>
 <div class="right">></div>
</div>

CSS

<style>
 #app {
  width: 400px;
  height: 50px;
  margin: 200px auto;
  position: relative;
  color: darkgray;
 }
 .title {
  position: absolute;
  top: -50px;
  left: 0;
  width: 200px;
  height: 50px;
 }
 ul {
  list-style: none;
  background-color: blanchedalmond;
  width: 100%;
  display: block;
  padding: 0;
 }
 ul li {
  display: inline-block;
  width: 50px;
  height: 50px;
  text-align: center;
  line-height: 50px;
  cursor: pointer;
 }
 .left {
  position: absolute;
  top: 0;
  left: -50px;
  font-size: 35px;
  cursor: pointer;
 }
 .right {
  position: absolute;
  top: 0;
  right: -50px;
  font-size: 35px;
  cursor: pointer;
 }
 .on {
  color: darkorange;
 }
</style>

JS

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
 <script>
 let now = new Date()
 let oneDay = 1000*60*60*24 // 一天的时间
 let timeArr = [] // 用来存储每次循环真正时间戳的数组
 let onDate = now.getTime() // 当前激活的日期(有且仅有一个)
 init()
 // 点击后添加激活样式
 $('ul li').on('click', function() {
  acton($(this).index())
 })
 $('.left').on('click', function() {
  changeUl(0)
 })
 $('.right').on('click', function() {
  changeUl(1)
 })

 function init() {
  // 计算初始化时的周一和周天
  let monday = now.getTime() - (now.getDay() - 1)*oneDay
  let sunday = now.getTime() + (7 - now.getDay())*oneDay
  // 循环渲染本周
  for(let i = 0;i < 7;i++) {
  let nowDate = monday + oneDay * i
  $('ul li').eq(i).text(new Date(nowDate).getDate())
  timeArr.push(nowDate)
  if (nowDate === now.getTime()) { // 初始化时渲染标签并激活当前本地日期和显示
   acton(i)
  }
  }
 }
 
 // 判断数组中是否存在该日期并激活
 function judon() {
  if (timeArr.indexOf(onDate) !== -1) {
  $('ul li').eq(timeArr.indexOf(onDate)).addClass('on').siblings().removeClass('on')
  } else {
  $('ul li').each(function() {
   $(this).removeClass('on')
  })
  }
 }

 // 点击前后实现更换每周内容,1是前进一周,0是后退一周
 function changeUl(type) {
  for (let n = 0;n < 7;n++) {
  timeArr[n] = type ? timeArr[n] + oneDay*7 : timeArr[n] - oneDay*7
  $('ul li').eq(n).text(new Date(timeArr[n]).getDate())
  }
  judon()
 }
 
 // 激活日期并显示
 function acton(i) {
  let nowTitle = new Date(timeArr[i]);
  $('ul li').eq(i).addClass('on').siblings().removeClass('on');
  $('.title').text(`${nowTitle.getFullYear()}年${nowTitle.getMonth()+1}月${nowTitle.getDate()}日`);
  onDate = timeArr[i]
 }
</script>

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

jQuery 相关文章推荐
BootStrap中jQuery插件Carousel实现轮播广告效果
Mar 27 jQuery
jQuery实现的简单在线计算器功能
May 11 jQuery
jQuery导航条固定定位效果实例代码
May 26 jQuery
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
jQuery+CSS实现的table表格行列转置功能示例
Jan 08 jQuery
jquery使用FormData实现异步上传文件
Oct 25 jQuery
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
Dec 10 jQuery
jQuery插件实现非常实用的tab栏切换功能【案例】
Feb 18 jQuery
JQuery获得内容和属性方法解析
May 30 jQuery
jquery+ajax实现异步上传文件显示进度条
Aug 17 jQuery
jquery实现拖拽小方块效果
Dec 10 jQuery
如何使用jQuery操作Cookies方法解析
Sep 08 #jQuery
jQuery实现简单三级联动效果
Sep 05 #jQuery
如何基于jQuery实现五角星评分
Sep 02 #jQuery
jQuery中getJSON跨域原理的深入讲解
Sep 02 #jQuery
Jquery $.map使用方法实例详解
Sep 01 #jQuery
JQuery基于FormData异步提交数据文件
Sep 01 #jQuery
JQuery使用数组遍历跳出each循环
Sep 01 #jQuery
You might like
如何利用php+mysql保存和输出文件
2006/10/09 PHP
php 破解防盗链图片函数
2008/12/09 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
js返回顶部实例分享
2016/12/21 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
JS实现图片切换效果
2018/11/17 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
对Python 数组的切片操作详解
2018/07/02 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
了解AppleTalk协议吗
2014/04/01 面试题
运动会解说词50字
2014/01/18 职场文书
乡村文明行动实施方案
2014/03/29 职场文书
授权委托书格式模板
2014/04/03 职场文书
卖房协议书
2014/04/11 职场文书
小学生寒假家长评语
2014/04/16 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
Redis批量生成数据的实现
2022/06/05 Redis