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 相关文章推荐
一段批量给页面上的控件赋值js
Jun 19 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
js 控制图片大小核心讲解
Oct 09 Javascript
获取中文字符串的实际长度代码
Jun 05 Javascript
自动适应iframe右边的高度
Dec 22 Javascript
浅谈Vue父子组件和非父子组件传值问题
Aug 22 Javascript
vue自定义tap指令及tap事件的实现
Sep 18 Javascript
微信小程序开发中var that =this的用法详解
Jan 18 Javascript
ES6 Symbol在对象中的作用实例分析
Jun 06 Javascript
Openlayers实现点闪烁扩散效果
Sep 24 Javascript
输入框跟随文字内容适配宽实现示例
Aug 14 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
一个简易需要注册的留言版程序
2006/10/09 PHP
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
Vue中组件之间数据的传递的示例代码
2017/09/08 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
Javascript模块化机制实现原理详解
2020/04/02 Javascript
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
Python中常用的内置方法
2019/01/28 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
财务主管自我鉴定
2014/01/17 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
面试后感谢信怎么写
2014/02/01 职场文书
商场总经理岗位职责
2014/02/03 职场文书
制作部班长职位说明书
2014/02/26 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
英文自荐信常用句子
2014/03/26 职场文书
视光学专业自荐信
2014/06/24 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
关于感谢信的范文
2015/01/23 职场文书
社会实践心得体会范文
2016/01/14 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript