原生态js,鼠标按下后,经过了那些单元格
本来是要判断那些单元格被选中,结果发现行不通,只能判断鼠标按下后,经过了那些单元格
之所以发出来,是觉得案例还有很多有意思的地方
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; //当鼠标被按下时,为true,放开是为true
var indexs =[]; //用来存放鼠标经过的单元格在整个表格的位置,鼠标按下时被初始化,
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,鼠标按下后,经过了那些单元格的更多相关文章
- JS实现填报时对修改过的单元格进行标识
1. 描述 在填报预览时,对单元格编辑后,其左上角有个红色标记,但非常不明显,用户很难注意到.有没有什么好的办法,对单元格操作后,将其做较明显的特殊标记处理,方便用户识别呢? 如图所示:对单元格进行操 ...
- 填报表导出excel后不可写的单元格处于锁定状态
填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作. 报表导出为excel时,润乾导出excel包默认情况下不对excel单 ...
- js动态删除某一行,内容超出单元格后超出的部分用省略号代替
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <s ...
- LibreOffice/Calc:单元格设置下拉菜单
造冰箱的大熊猫,本文适用于LibreOffice Calc 5.1.6.2 + Ubuntu 16.04@cnblogs 2019/1/2 LibreOffice是一个类似Microsoft Off ...
- javascript--鼠标拖拽窗口案例(鼠标按下,在鼠标移动过程中,盒子跟着一起移动,鼠标松开,盒子停止移动)
界面如图所示: 要求:在“信息注册”栏,按下鼠标,然后鼠标在页面移动,在鼠标移动过程中,该窗口跟着鼠标移动,当鼠标松开的时候,窗口停止移动.点击“关闭”,该窗口隐藏. 实现思路: 1.页面结构分析:一 ...
- js 鼠标和键盘事件
js 鼠标和键盘事件 鼠标事件 聚焦事件 离焦事件 鼠标单击和双击 鼠标的其他事件 鼠标事件对象 键盘事件 鼠标事件 聚焦事件 <input type="text" id=& ...
- JS鼠标事件大全 推荐收藏
一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...
- js鼠标事件大全
一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...
- JS 鼠标事件大全
一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...
随机推荐
- centos7 + VMware Workstation Pro
centos7 + VMware Workstation Pro安装 centos 7 镜像文件 下载地址https://www.centos.org/download/ 笔者是使用的DVD ISO, ...
- 如何以nobody用户执行命令?
最近在logstash中使用nobody用户启动logstash,一想,nobody用户的shell不是/sbin/nologin吗? 不能登录执行命令呀? 于是看了一下它的启动脚本,是使用其他方式进 ...
- 第二次冲刺-Runner站立会议01
今天做了什么:主要看了gridview的使用方法 遇到的困难:与适配器的链接不会 明天准备做什么:尽量将gridview与baseadapter适配器连接起来
- QT 初阶 第二章 创建对话框(查找对话框实例)
最终效果图: 该对话框由三个文件组成:finddialog.h .finddialog.cpp. main.cpp 代码+注释 /*--finddialog.h--*/ #ifndef FINDDIA ...
- json_encode详解,转义
1.json_encod基本用法:数组转字符串 <?php $arr = array (,,,,); echo json_encode($arr); ?> 以上例程会输出: {,,,,} ...
- 快递api网接口快递调用方法
----------------实体类 [DataContract] public class SyncResponseEntity { public SyncResponseEntity() { } ...
- AutoMocker单元测试
/// <summary> /// 测试获取所有物流 /// </summary> [TestMethod] public void TestExpressController ...
- 使用pt-fifo-split 工具往mysql插入海量数据
在<mysql插入/更新数据>这篇文章提到,使用LOAD DATA INFILE语句,可以从一个文件直接加载数据到mysql中,但如果文件非常大,可能还需要对文件进行切割,分多次加载,这种 ...
- ASP.NET Padding Oracle Attack EXP
#!/usr/bin/perl## PadBuster v0.3 - Automated script for performing Padding Oracle attacks# Brian Hol ...
- 【转】【整理】将Linux脚本中的正常输出,警告,错误等信息输出到文件中
本文来自:http://blog.csdn.net/woshinia/article/details/18040063 很早以前 编译的时候 就在用 2>&1,但是一直没有生成一 ...