原生态js,鼠标按下后,经过了那些单元格的简单实例


Posted in Javascript onAugust 11, 2016

本来是要判断那些单元格被选中,结果发现行不通,只能判断鼠标按下后,经过了那些单元格

之所以发出来,是觉得案例还有很多有意思的地方

onmouseover  的持续触发,导致了很多重复元素

由于将事件绑定在整个table上,还出现了undefined

鼠标的反复进入进出,会导致相同元素的断断续续的重复,

如何解决他们!

<table border="1" id="dnf"> 
  <tr> 
     
     
    <td rowspan="2">2</td> 
    <td>2</td> 
    <td>4</td> 
  </tr> 
  <tr> 
     
     
    <td>2</td> 
    <td>4</td> 
  </tr> 
</table>
window.onload = function() 
{ 
  var flag = false;<BR>
 //当鼠标被按下时,为true,放开是为true 
  var indexs =[];<BR>


//用来存放鼠标经过的单元格在整个表格的位置,鼠标按下时被初始化, 
  dnf.onmousedown = function() 
  { 
    flag = true; 
    indexs = []; 
  } 
  dnf.onmousemove = function(e) 
  { 
    if(flag)//只有鼠标被按下时,才会执行复合代码 
    { 
      indexs.push(search(e.target,dnf.getElementsByTagName("td")))   
    } 
  } 
  dnf.onmouseup = function() 
  { 
    flag = false; 
    deleteUndefined();//由于会经过边框,所以会出现null元素 
    deleteRepaint();//由于onmouseover不会只触发一次,且我们选择是可能反复经过一个单元格 
    alert(indexs); 
  } 
  function deleteRepaint() 
  { 
    for(var j=0;j<indexs.length;j++)//保证第j个元素是唯一的 
    { 
      var head = indexs[j]; 
      for(var i=j+1;i<indexs.length;i++)//删除与第j个重复的 
      { 
        if(head == indexs[i]) 
        { 
          indexs.splice(i,1); 
          i--; 
        } 
      } 
    } 
  } 
  function deleteUndefined() 
  { 
     
    for(var i=0;i<indexs.length;i++) 
    { 
      if(typeof indexs[i] == "undefined") 
      { 
        indexs.splice(i,1); 
        i--; 
      } 
    } 
     
  } 
  function search(a,A) 
  { 
    var length = A.length; 
     
    for(var i=0;i<length;i++) 
    { 
       
      if(a == A[i]) 
      { 
       
        return i; 
      } 
       
    } 
  } 
} 
</script>

以上这篇原生态js,鼠标按下后,经过了那些单元格的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
JavaScript中length属性的使用方法
Jun 05 Javascript
JS实现生成会变大变小的圆环实例
Aug 05 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
Apr 06 Javascript
AngularJS基础 ng-keydown 指令简单示例
Aug 02 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
Sep 09 Javascript
jquery插入兄弟节点的操作方法
Dec 07 Javascript
Bootstrap表单使用方法详解
Feb 17 Javascript
基于AGS JS开发自定义贴图图层
Mar 31 Javascript
在Swiper内如何制作CSS3动画效果示例代码
Dec 07 Javascript
JS引用传递与值传递的区别与用法分析
Jun 01 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
Jul 19 Javascript
vue分页组件table-pagebar使用实例解析
Nov 15 #Javascript
使用BootStrap实现用户登录界面UI
Aug 10 #Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
Aug 10 #Javascript
BootStrap Typeahead自动补全插件实例代码
Aug 10 #Javascript
BootStrap中Datepicker控件带中文的js文件
Aug 10 #Javascript
JS获取鼠标选中的文字
Aug 10 #Javascript
浅析JavaScript函数的调用模式
Aug 10 #Javascript
You might like
PHP使用递归生成文章树
2015/04/21 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
php限制文件下载速度的代码
2015/10/20 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
JavaScript组合模式学习要点
2016/08/26 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
Python字符串逐字符或逐词反转方法
2015/05/21 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
python skimage 连通性区域检测方法
2018/06/21 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
Python文件操作的面试题
2013/06/22 面试题
毕业证丢失证明
2014/01/15 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
优秀教师事迹材料
2014/12/15 职场文书
八年级英语教学计划
2015/01/23 职场文书
鼋头渚导游词
2015/02/05 职场文书
工程部部长岗位职责
2015/02/12 职场文书
2016年校长新年寄语
2015/08/17 职场文书
vue实现登陆页面开发实践
2022/05/30 Vue.js