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获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 Javascript
js上传图片及预览功能实例分析
Apr 24 Javascript
基于jquery实现全屏滚动效果
Nov 26 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
Jan 28 Javascript
jQuery包裹节点用法完整示例
Sep 13 Javascript
详解JS异步加载的三种方式
Mar 07 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
Mar 09 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
Nov 27 Javascript
Element DateTimePicker日期时间选择器的使用示例
Jul 27 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
德生S2000电路分析
2021/03/02 无线电
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
用js重建星际争霸
2006/12/22 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
react的hooks的用法详解
2020/10/12 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
python3中的md5加密实例
2018/05/29 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
超市端午节活动方案
2014/01/23 职场文书
建设工地安全标语
2014/06/07 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
建国大业观后感
2015/06/01 职场文书
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python