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插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 jQuery
jQuery列表检索功能实现代码
Jul 17 jQuery
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 jQuery
Vue+jquery实现表格指定列的文字收缩的示例代码
Jan 09 jQuery
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 jQuery
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 jQuery
基于jQuery的时间戳与日期间的转化
Jun 21 jQuery
jQuery pager.js 插件动态分页功能实例分析
Aug 02 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
用ODBC的分页显示
2006/10/09 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
JavaScript Eval 函数使用
2010/03/23 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
vue组件间通信解析
2017/03/01 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
Python中List.index()方法的使用教程
2015/05/20 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
Python中过滤字符串列表的方法
2020/12/22 Python
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
应届毕业生如何写求职信
2014/02/16 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
体育专业自荐书
2014/05/29 职场文书
超市周年庆活动方案
2014/08/16 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
先进班集体申报材料
2014/12/26 职场文书