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实现多张图片上传预览(不经过后端处理)
Apr 29 jQuery
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
jquery实现简单实用的轮播器
May 23 jQuery
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
jQuery实现获取table中鼠标click点击位置行号与列号的方法
Oct 09 jQuery
jQuery第一次运行页面默认触发点击事件的实例
Jan 10 jQuery
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 jQuery
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
JS与jQuery判断文本框还剩多少字符可以输入的方法
Sep 01 jQuery
jQuery pagination分页示例详解
Oct 23 jQuery
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
Jul 22 jQuery
jQuery 移除事件的方法
Jun 20 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
咖啡与牛奶
2021/03/03 冲泡冲煮
MySql中正则表达式的使用方法描述
2008/07/30 PHP
PHP 一个页面执行时间类代码
2010/03/05 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
jQuery使用each遍历循环的方法
2018/09/19 jQuery
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
Python 初始化多维数组代码
2008/09/06 Python
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
总经理的岗位职责
2014/02/23 职场文书
音乐幼师求职信
2014/07/09 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
新闻稿怎么写
2015/07/18 职场文书
高中地理教学反思
2016/02/19 职场文书