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异步提交表单实例
May 30 jQuery
jQuery ajax动态生成table功能示例
Jun 14 jQuery
使用jQuery实现动态添加小广告
Jul 11 jQuery
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 jQuery
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
jQuery中DOM操作原则实例分析
Aug 01 jQuery
js与jquery获取input输入框中的值实例讲解
Feb 27 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 FPDF类库应用实现代码
2009/03/20 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
Ext 今日学习总结
2010/09/19 Javascript
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
跟老齐学Python之网站的结构
2014/10/24 Python
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
Python2.x与Python3.x的区别
2016/01/14 Python
django之常用命令详解
2016/06/30 Python
python daemon守护进程实现
2016/08/27 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
python3实现字符串操作的实例代码
2019/04/16 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
python3.7 sys模块的具体使用
2019/07/22 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
大四毕业生学习总结的自我评价
2013/10/31 职场文书
父母寄语大全
2014/04/12 职场文书
检讨书怎么写
2015/01/23 职场文书
小学生家长意见
2015/06/03 职场文书
初三毕业感言
2015/07/31 职场文书