JavaScript 实现同时选取多个时间段的方法


Posted in Javascript onOctober 17, 2019

本文介绍了JavaScript 实现同时选取多个时间段的方法,分享给大家,具体如下:

<template>
 <div>
  <ul>
   <li
    v-for="(item,index) in timeLine.idList"
    :key="index"
    iselected="0"
    @mousemove="item.id != undefined ? move_li($event) : ''"
    @mousedown="item.id != undefined ? down_li() : ''"
    @mouseup="item.id != undefined ? up_li() : ''"
    :id="item.id != undefined ? item.id : ''"
   >
    <div :id="item.id != undefined ? item.id : ''" iselected="0"></div>
   </li>
  </ul>
  <div class="num">
   <span>0</span>
   <span>1</span>
   <span>2</span>
   <span>3</span>
   <span>4</span>
   <span>5</span>
   <span>6</span>
   <span>7</span>
   <span>8</span>
   <span>9</span>
   <span>10</span>
   <span>11</span>
   <span>12</span>
   <span>13</span>
   <span>14</span>
   <span>15</span>
   <span>16</span>
   <span>17</span>
   <span>18</span>
   <span>19</span>
   <span>20</span>
   <span>21</span>
   <span>22</span>
   <span>23</span>
   <span>24</span>
  </div>
 </div>
</template>

<script>
export default {
 data() {
  return {
   timeLine: {
    flag: 0,
    preid: -1,
    idList: [
     {},
     { id: 0 },
     {},
     { id: 1 },
     {},
     { id: 2 },
     {},
     { id: 3 },
     {},
     { id: 4 },
     {},
     { id: 5 },
     {},
     { id: 6 },
     {},
     { id: 7 },
     {},
     { id: 8 },
     {},
     { id: 9 },
     {},
     { id: 10 },
     {},
     { id: 11 },
     {},
     { id: 12 },
     {},
     { id: 13 },
     {},
     { id: 14 },
     {},
     { id: 15 },
     {},
     { id: 16 },
     {},
     { id: 17 },
     {},
     { id: 18 },
     {},
     { id: 19 },
     {},
     { id: 20 },
     {},
     { id: 21 },
     {},
     { id: 22 },
     {},
     { id: 23 },
     {}
    ]
   }
  };
 },
 methods: {
  down_li(e) {
   this.timeLine.flag = 1;
  },
  up_li() {
   this.timeLine.flag = 0;
   this.timeLine.preid = -1;
  },
  move_li(e) {
   if (this.timeLine.flag == 0) {
    return;
   }
   var id = e.target.getAttribute('id');
   if (id == undefined) {
    return;
   }
   id = parseInt(id);
   // 避免重复获取 ID,每个时间段都只获取一次 ID
   if (this.timeLine.preid == id) {
    return;
   }
   // 避免滑动时闪烁
   this.timeLine.preid = id;
   var iselected = $('#' + id).attr('iselected');
   if (iselected == 1) {
    $("#"+id).children('div').css('background-color','');
    $("#"+id).attr('iselected', '0');
   } else {
    $("#"+id).children('div').css('background-color','#3bbe9b');
    $("#"+id).attr('iselected', '1');
   }
  },
  // 处理提交至后台数据的时间格式为 start : end
  timeLineSub() {
   var preid = -1;
   var start;
   var count = 0;
   var timeArr = [];
   $('li[iselected=1]').each(function(index, value) {
    var id = value.id;
    if (preid == -1) {
     preid = id;
     start = id;
     count++;
     return;
    }
    if (preid == id - 1) {
     count++;
    } else {
     if (count > 0) {
      timeArr.push(start + ':' + count);
     }
     start = id;
     count = 1;
    }
    preid = id;
   });
   timeArr.push(start + ':' + count);
   this.timeRange = timeArr.join(',');
  }
 }
};
</script>

<style lang="less" scoped>
html,
body {
 margin: 0;
 padding: 0;
 ul {
  height: 20px;
  margin-bottom: 0px;
  padding: 10px 19px;
  li {
   cursor: pointer;
   list-style: none;
   float: left;
   height: 20px;
   padding: 6px 0;
  }
  li:nth-child(even) {
   div {
    width: 28px;
    height: 5px;
    margin-top: 2px;
    background-color: rgb(232, 234, 236);
   }
  }
  li:nth-child(odd) {
   div {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    margin-top: 1px;
    border: 1px solid rgb(59, 190, 155);
   }
  }
 }
 .num {
  height: 100%;
  padding-left: 20px;
  margin-top: 2px;
  span {
   display: inline-block;
   width: 9px;
   height: 7px;
   font-size: 12px;
   margin-right: 23px;  
  }
  span:last-child {
   margin-right: 0px;
  }
 }
}
</style>

效果图如下:

JavaScript 实现同时选取多个时间段的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
jQuery渐变发光导航菜单的实例代码
Mar 27 Javascript
arguments对象验证函数的参数是否合法
Jun 26 Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 Javascript
JS通过Cookie判断页面是否为首次打开
Feb 05 Javascript
Webpack打包慢问题的完美解决方法
Mar 16 Javascript
jQuery实现获取动态添加的标签对象示例
Jun 28 jQuery
vue中的数据绑定原理的实现
Jul 02 Javascript
Bootstrap table表格初始化表格数据的方法
Jul 25 Javascript
vue 搭建后台系统模块化开发详解
May 01 Javascript
VsCode里的Vue模板的实现
Aug 12 Javascript
Javascript节流函数throttle和防抖函数debounce
Dec 03 Javascript
Layui事件监听的实现(表单和数据表格)
Oct 17 #Javascript
浅谈Vue.set实际上是什么
Oct 17 #Javascript
Vuex modules模式下mapState/mapMutations的操作实例
Oct 17 #Javascript
vuex + keep-alive实现tab标签页面缓存功能
Oct 17 #Javascript
Weex开发之地图篇的具体使用
Oct 16 #Javascript
WEEX环境搭建与入门详解
Oct 16 #Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
Oct 16 #Javascript
You might like
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
python在linux中输出带颜色的文字的方法
2014/06/19 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
django ajax json的实例代码
2018/05/29 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
python实现小世界网络生成
2019/11/21 Python
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
Ajax和javascript的区别
2013/07/20 面试题
教师个人自我鉴定
2014/02/08 职场文书
学生请假条格式
2014/04/11 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2015新学期家长寄语
2015/02/26 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
运动会观后感
2015/06/09 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis