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 相关文章推荐
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
关于jquery layui弹出层的使用方法
Apr 21 jQuery
jQuery发请求传输中文参数乱码问题的解决方案
May 22 jQuery
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
详解JQuery基础动画操作
Apr 12 jQuery
jQuery操作cookie的示例代码
Jun 05 jQuery
jquery树形插件zTree高级使用详解
Aug 16 jQuery
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 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运算符的知识大全
2011/11/03 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
js实现交通灯效果
2017/01/13 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
tensorflow获取变量维度信息
2018/03/10 Python
python读取指定字节长度的文本方法
2019/08/27 Python
python实现3D地图可视化
2020/03/25 Python
Numpy数组的广播机制的实现
2020/11/03 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
园林施工员岗位职责
2013/12/11 职场文书
《假如》教学反思
2014/04/17 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
国庆节主题班会
2015/08/15 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
MySQL存储过程及语法详解
2022/08/05 MySQL