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 相关文章推荐
有关DOM元素与事件的3个谜题
Nov 11 Javascript
angularJS结合canvas画图例子
Feb 09 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
May 26 Javascript
js 原型对象和原型链理解
Feb 09 Javascript
jQuery实现大图轮播
Feb 13 Javascript
javascript+html5+css3自定义提示窗口
Jun 21 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
Jul 24 Javascript
js获取css的各种样式并且设置他们的方法
Aug 22 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
Apr 16 Javascript
深入了解JavaScript 防抖和节流
Sep 12 Javascript
uniapp微信小程序实现一个页面多个倒计时
Nov 01 Javascript
基于angular实现树形二级表格
Oct 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
php中利用post传递字符串重定向的实现代码
2011/04/21 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
简单谈谈Python中的闭包
2016/11/30 Python
Python中Threading用法详解
2017/12/27 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
对python字典过滤条件的实例详解
2019/01/22 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
大学生职业生涯规划方案
2014/01/03 职场文书
英文求职信写作小建议
2014/02/16 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
建筑节能汇报材料
2014/08/22 职场文书
租赁协议书
2015/01/27 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
Python中zipfile压缩包模块的使用
2021/05/14 Python
php去除数组中为0的元素的实例分析
2021/11/17 PHP
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers