Javascript实现鼠标框选操作  不是点击选取


Posted in Javascript onApril 14, 2016

本文实例为大家分享了Javascript实现鼠标框选操作,绝不是点击选取,供大家参考,具体内容如下

效果图:

Javascript实现鼠标框选操作  不是点击选取

代码:

<html> 
<head></head> 
<style> 
body{padding:100px;} 
.fileDiv{float:left;width:100px;height:100px;text-align:center;line-height:100px;font-size:12px;border:1px solid #ccc;margin-right:10px;margin-bottom:10px;} 
.seled{border:1px solid red;background-color:#D6DFF7;} 
</style> 
<script type="text/javascript">  
(function() { 
  document.onmousedown = function() { 
 
    var selList = []; 
    var fileNodes = document.getElementsByTagName("div"); 
    for ( var i = 0; i < fileNodes.length; i++) { 
      if (fileNodes[i].className.indexOf("fileDiv") != -1) { 
        fileNodes[i].className = "fileDiv"; 
        selList.push(fileNodes[i]); 
      } 
    } 
 
    var isSelect = true; 
    var evt = window.event || arguments[0]; 
    var startX = (evt.x || evt.clientX); 
    var startY = (evt.y || evt.clientY); 
    var selDiv = document.createElement("div"); 
    selDiv.style.cssText = "position:absolute;width:0px;height:0px;font-size:0px;margin:0px;padding:0px;border:1px dashed #0099FF;background-color:#C3D5ED;z-index:1000;filter:alpha(opacity:60);opacity:0.6;display:none;"; 
    selDiv.id = "selectDiv"; 
    document.body.appendChild(selDiv); 
 
    selDiv.style.left = startX + "px"; 
    selDiv.style.top = startY + "px"; 
 
    var _x = null; 
    var _y = null; 
    clearEventBubble(evt); 
 
    document.onmousemove = function() { 
      evt = window.event || arguments[0]; 
      if (isSelect) { 
        if (selDiv.style.display == "none") { 
          selDiv.style.display = ""; 
        } 
        _x = (evt.x || evt.clientX); 
        _y = (evt.y || evt.clientY); 
        selDiv.style.left = Math.min(_x, startX) + "px"; 
        selDiv.style.top = Math.min(_y, startY) + "px"; 
        selDiv.style.width = Math.abs(_x - startX) + "px"; 
        selDiv.style.height = Math.abs(_y - startY) + "px"; 
 
        // ---------------- 关键算法 ---------------------  
        var _l = selDiv.offsetLeft, _t = selDiv.offsetTop; 
        var _w = selDiv.offsetWidth, _h = selDiv.offsetHeight; 
        for ( var i = 0; i < selList.length; i++) { 
          var sl = selList[i].offsetWidth + selList[i].offsetLeft; 
          var st = selList[i].offsetHeight + selList[i].offsetTop; 
          if (sl > _l && st > _t && selList[i].offsetLeft < _l + _w && selList[i].offsetTop < _t + _h) { 
            if (selList[i].className.indexOf("seled") == -1) { 
              selList[i].className = selList[i].className + " seled"; 
            } 
          } else { 
            if (selList[i].className.indexOf("seled") != -1) { 
              selList[i].className = "fileDiv"; 
            } 
          } 
        } 
 
      } 
      clearEventBubble(evt); 
    } 
 
    document.onmouseup = function() { 
      isSelect = false; 
      if (selDiv) { 
        document.body.removeChild(selDiv); 
        showSelDiv(selList); 
      } 
      selList = null, _x = null, _y = null, selDiv = null, startX = null, startY = null, evt = null; 
    } 
  } 
})(); 
function clearEventBubble(evt) { 
  if (evt.stopPropagation) 
    evt.stopPropagation(); 
  else 
    evt.cancelBubble = true; 
  if (evt.preventDefault) 
    evt.preventDefault(); 
  else 
    evt.returnValue = false; 
} 
function showSelDiv(arr) { 
  var count = 0; 
  var selInfo = ""; 
  for ( var i = 0; i < arr.length; i++) { 
    if (arr[i].className.indexOf("seled") != -1) { 
      count++; 
      selInfo += arr[i].innerHTML + "\n"; 
    } 
  } 
  alert("共选择 " + count + " 个文件,分别是:\n" + selInfo); 
} 
</script> 
<body> 
  <div class="fileDiv">file1</div> 
  <div class="fileDiv">file2</div> 
  <div class="fileDiv">file3</div> 
  <div class="fileDiv">file4</div> 
  <div class="fileDiv">file5</div> 
  <div class="fileDiv">file6</div> 
  <div class="fileDiv">file7</div> 
  <div class="fileDiv">file8</div> 
  <div class="fileDiv">file9</div> 
 
</body> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
JQuery 技巧和窍门整理(8个)
Apr 22 Javascript
运算符&amp;&amp;的三个不同层次
Apr 07 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
Sep 25 Javascript
JavaScript前补零操作实例
Mar 11 Javascript
jQuery实现立体式数字滚动条增加效果
Dec 21 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 Javascript
小程序实现授权登陆的解决方案
Dec 02 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
May 12 Javascript
Layui table field初始化加载时进行隐藏的方法
Sep 19 Javascript
javascript实现简单搜索功能
Mar 26 Javascript
公众号SVG动画交互实战代码
May 31 Javascript
Node.js实现数据推送
Apr 14 #Javascript
node.js实现端口转发
Apr 14 #Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 #Javascript
谈一谈JS消息机制和事件机制的理解
Apr 14 #Javascript
Kindeditor在线文本编辑器如何过滤HTML
Apr 14 #Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
Apr 14 #Javascript
[原创]JQuery 在表单提交之前修改 提交的值
Apr 14 #Javascript
You might like
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
Python实现简单状态框架的方法
2015/03/19 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
python获取Linux发行版名称
2019/08/30 Python
python实现简易淘宝购物
2019/11/22 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
护理个人求职信范文
2014/01/08 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
学习之星事迹材料
2014/05/17 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
作风建设整改方案
2014/10/27 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
Golang 入门 之url 包
2022/05/04 Golang