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

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

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

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

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

如何解决他们!

  1. <table border="1" id="dnf">
  2. <tr>
  3.  
  4. <td rowspan="2">2</td>
  5. <td>2</td>
  6. <td>4</td>
  7. </tr>
  8. <tr>
  9.  
  10. <td>2</td>
  11. <td>4</td>
  12. </tr>
  13. </table>

  

  1. window.onload = function()
  2. {
  3. var flag = false;     //当鼠标被按下时,为true,放开是为true
  4. var indexs =[];      //用来存放鼠标经过的单元格在整个表格的位置,鼠标按下时被初始化,
  5. dnf.onmousedown = function()
  6. {
  7. flag = true;
  8. indexs = [];
  9. }
  10. dnf.onmousemove = function(e)
  11. {
  12. if(flag)//只有鼠标被按下时,才会执行复合代码
  13. {
  14. indexs.push(search(e.target,dnf.getElementsByTagName("td")))
  15. }
  16. }
  17. dnf.onmouseup = function()
  18. {
  19. flag = false;
  20. deleteUndefined();//由于会经过边框,所以会出现null元素
  21. deleteRepaint();//由于onmouseover不会只触发一次,且我们选择是可能反复经过一个单元格
  22. alert(indexs);
  23. }
  24. function deleteRepaint()
  25. {
  26. for(var j=0;j<indexs.length;j++)//保证第j个元素是唯一的
  27. {
  28. var head = indexs[j];
  29. for(var i=j+1;i<indexs.length;i++)//删除与第j个重复的
  30. {
  31. if(head == indexs[i])
  32. {
  33. indexs.splice(i,1);
  34. i--;
  35. }
  36. }
  37. }
  38. }
  39. function deleteUndefined()
  40. {
  41.  
  42. for(var i=0;i<indexs.length;i++)
  43. {
  44. if(typeof indexs[i] == "undefined")
  45. {
  46. indexs.splice(i,1);
  47. i--;
  48. }
  49. }
  50.  
  51. }
  52. function search(a,A)
  53. {
  54. var length = A.length;
  55.  
  56. for(var i=0;i<length;i++)
  57. {
  58.  
  59. if(a == A[i])
  60. {
  61.  
  62. return i;
  63. }
  64.  
  65. }
  66. }
  67. }
  68. </script>

  

原生态js,鼠标按下后,经过了那些单元格的更多相关文章

  1. JS实现填报时对修改过的单元格进行标识

    1. 描述 在填报预览时,对单元格编辑后,其左上角有个红色标记,但非常不明显,用户很难注意到.有没有什么好的办法,对单元格操作后,将其做较明显的特殊标记处理,方便用户识别呢? 如图所示:对单元格进行操 ...

  2. 填报表导出excel后不可写的单元格处于锁定状态

     填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作. 报表导出为excel时,润乾导出excel包默认情况下不对excel单 ...

  3. js动态删除某一行,内容超出单元格后超出的部分用省略号代替

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <s ...

  4. LibreOffice/Calc:单元格设置下拉菜单

     造冰箱的大熊猫,本文适用于LibreOffice Calc 5.1.6.2 + Ubuntu 16.04@cnblogs 2019/1/2 LibreOffice是一个类似Microsoft Off ...

  5. javascript--鼠标拖拽窗口案例(鼠标按下,在鼠标移动过程中,盒子跟着一起移动,鼠标松开,盒子停止移动)

    界面如图所示: 要求:在“信息注册”栏,按下鼠标,然后鼠标在页面移动,在鼠标移动过程中,该窗口跟着鼠标移动,当鼠标松开的时候,窗口停止移动.点击“关闭”,该窗口隐藏. 实现思路: 1.页面结构分析:一 ...

  6. js 鼠标和键盘事件

    js 鼠标和键盘事件 鼠标事件 聚焦事件 离焦事件 鼠标单击和双击 鼠标的其他事件 鼠标事件对象 键盘事件 鼠标事件 聚焦事件 <input type="text" id=& ...

  7. JS鼠标事件大全 推荐收藏

    一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...

  8. js鼠标事件大全

    一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...

  9. JS 鼠标事件大全

    一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...

随机推荐

  1. iOS - Runloop个人总结

    调用堆栈: 程序运行之前,自上而下启动 iOS端用的所用系统framework都是动态链接的. dyld:The dynamic link editor 动态链接器

  2. BZOJ1180: [CROATIAN2009]OTOCI

    传送门 一遍AC,开心! $Link-Cut-Tree$最后一题 //BZOJ 1180 //by Cydiater //2016.9.18 #include <iostream> #in ...

  3. js002-在HTML中使用JavaScript

    js002-在HTML中使用JavaScript 2.1            <script>元素   定义了以下6个属性   async: 可选.表示应该立即下载脚本,但不妨碍页面中的 ...

  4. WinForm------TextEdit控件去掉换行符

    //将换行转为空格 string str = this.DetailEdit.Text.Replace("\r\n"," ");

  5. Ztree的简单使用和后台交互的写法(一)

    一.引入ztree的头文件 <!-- 引入ztree/--> <script type="text/javascript" src="${pageCon ...

  6. 初识Hadoop二,文件操作

    1.使用hadoop命令查看hdfs下文件 [root@localhost hadoop-2.7.3]# hadoop fs -ls hdfs://192.168.36.134:9000/ 开始在se ...

  7. OpenGL Pixel Linked-List

    Keywords: opengl linked list http://on-demand.gputechconf.com/gtc/2014/presentations/S4385-order-ind ...

  8. js无间隙滚动

    代码一: ; //设置文字滚动速度 dome2.innerHTML=dome1.innerHTML //复制dome1为dome2 function Marquee(){ ) //当滚动至dome1与 ...

  9. Java中hashCode的作用

    转  http://blog.csdn.net/fenglibing/article/details/8905007 Java中hashCode的作用 2013-05-09 13:54 64351人阅 ...

  10. Spring系列之基本配置

    一.概述Spring是一个轻量级的Java开源框架,是为了简化企业级系统开发而诞生的.Spring的核心是控制反转(IOC)和面向切面编程(AOP).主要有以下几个特点:(1)轻量:从大小和开销两方面 ...