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 相关文章推荐
javascript 播放器 控制
Jan 22 Javascript
JQUERY复选框CHECKBOX全选,取消全选
Aug 30 Javascript
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
JavaScript中this的使用详解
Nov 08 Javascript
javascript动态设置样式style实例分析
May 13 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
Aug 11 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
Nov 24 Javascript
Angular.js回顾ng-app和ng-model使用技巧
Apr 26 Javascript
JavaScript之DOM_动力节点Java学院整理
Jul 03 Javascript
vue进入页面时滚动条始终在底部代码实例
Mar 26 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
Jquery ajax书写方法代码实例解析
Jun 12 jQuery
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
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
定义select的边框颜色
2008/04/28 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
JS合并两个数组的3种方法详解
2019/10/24 Javascript
js实现时间日期校验
2020/05/26 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
Python 递归函数详解及实例
2016/12/27 Python
python实现邮件发送功能
2019/08/10 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
python绘制随机网络图形示例
2019/11/21 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
实习鉴定范文
2013/12/19 职场文书
画展邀请函
2015/01/31 职场文书
避暑山庄导游词
2015/02/04 职场文书
春节慰问信范文
2015/02/15 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
Python必备技巧之函数的使用详解
2022/04/04 Python
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL