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 相关文章推荐
Knockoutjs快速入门(经典)
Dec 24 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
Dec 13 Javascript
jquery 中ajax执行的优先级
Jun 22 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
Aug 24 Javascript
jquery代码规范让代码越来越好看
Feb 03 Javascript
JavaScript Uploadify文件上传实例
Feb 28 Javascript
bootstrap手风琴折叠示例代码分享
May 22 Javascript
详解webpack异步加载业务模块
Jun 23 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
Nov 22 Javascript
深入理解Vue 的钩子函数
Sep 05 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
Jun 05 Javascript
js+canvas实现画板功能
Sep 13 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的memory_limit限制的方法分享
2012/02/21 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
2020/12/30 jQuery
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
一些Python中的二维数组的操作方法
2015/05/02 Python
Python之str操作方法(详解)
2017/06/19 Python
python图像常规操作
2017/11/11 Python
Python多图片合并PDF的方法
2019/01/03 Python
python sorted方法和列表使用解析
2019/11/18 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
python opencv实现简易画图板
2020/08/27 Python
Python高并发和多线程有什么关系
2020/11/14 Python
怎样让char类型的东西转换成int类型
2013/12/09 面试题
李敖北大演讲稿
2014/05/24 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
800字作文之大雪
2019/12/04 职场文书
php双向队列实例讲解
2021/11/17 PHP