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 相关文章推荐
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 jQuery
jQuery实现的表格前端排序功能示例
Sep 18 jQuery
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
Sep 23 jQuery
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
基于jQuery实现无缝轮播与左右点击效果
May 13 jQuery
JQuery扩展对象方法操作示例
Aug 21 jQuery
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
jQuery中DOM操作原则实例分析
Aug 01 jQuery
jQuery zTree插件快速实现目录树
Aug 16 jQuery
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
html中两种获取标签内的值的方法
Jun 16 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+Html+缓存
2006/12/20 PHP
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
Python类的基础入门知识
2008/11/24 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
python将list转为matrix的方法
2018/12/12 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
使用django自带的user做外键的方法
2020/11/30 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
什么是设计模式
2012/06/17 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
十佳中学生事迹材料
2014/06/02 职场文书
护士2014年终工作总结
2014/11/11 职场文书
四年级学生期末评语
2014/12/26 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
教务处教学工作总结
2015/08/10 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
总结Pyinstaller打包的高级用法
2021/06/28 Python
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL
ipad隐藏软件app图标方法
2022/04/19 数码科技