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 each的几种常用的使用方法示例
Jan 21 Javascript
jQuery遍历对象、数组、集合实例
Nov 08 Javascript
理解javascript定时器中的单线程
Feb 23 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 Javascript
js实现简单的二级联动效果
Mar 09 Javascript
基于vuejs实现一个todolist项目
Apr 11 Javascript
vue实现一个炫酷的日历组件
Oct 08 Javascript
ES6 Set结构的应用实例分析
Jun 26 Javascript
layui实现二维码弹窗、并下载到本地的方法
Sep 25 Javascript
Vue学习之常用指令实例详解
Jan 06 Javascript
vue 扩展现有组件的操作
Aug 14 Javascript
原生JS实现拖拽功能
Dec 16 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
Yii框架中memcache用法实例
2014/12/03 PHP
Prototype Object对象 学习
2009/07/12 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
详解Python正则表达式re模块
2019/03/19 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
python修改FTP服务器上的文件名
2019/09/11 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
2014年科室工作总结
2014/11/20 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
分享3个非常实用的 Python 模块
2022/03/03 Python
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android