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

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

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,鼠标按下后,经过了那些单元格的更多相关文章

  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. 强大的css3

    强大的css3 我们知道,这几年来智能手机的高速发展使得人们使用移动端上网的时间和人数已经超过了PC端.例如在2015年,就中国电商而言,各电商平台在移动端持续发力,移动端购物占比不断攀升,双11期间 ...

  2. Linux bash 中,如何将正常信息和错误信息输出到文件

    问题描述: $ command 2>> error $ command 1>> output 是否有方法,在bash同一行,实现输出stderr到error文件,输出stdou ...

  3. Distinct

    SELECT 指令让我们能够读取表格中一个或数个栏位的所有资料.这将把所有的资料都抓出,无论资料值有无重复.在资料处理中,我们会经常碰到需要找出表格内的不同资料值的情况.换句话说,我们需要知道这个表格 ...

  4. Robot Framework--12 RFS+AutoItLibrary测试web对话框

    转自:http://blog.csdn.net/tulituqi/article/details/21871247 Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过 ...

  5. DELL服务器引导光盘下载

    http://www.dell.com/support/home/cn/zh/cndhs1/Drivers/DriversDetails?driverId=68RWT&fileid=27311 ...

  6. jQuery 鼠标拖拽移动窗口

    拖拽移动需要注意的是:拖拽移动的窗口是如何定位的,如果"left"属性为"%" ,以"margin-left"来计算定位,如下实例,如果&q ...

  7. 在CentOS上搭建apache和PHP服务器环境(转)

    1.您也可以使用一键自动部署环境的工具,请参见网友开发的这个工具 http://www.centos.bz/2013/08/ezhttp-tutorial/ 2. 安装: wget -c http:/ ...

  8. CSS核心的几个概念

    盒模型.position.float.他们是css的基础,之间看似独立却又相辅相成. 元素类型 块级元素.内联元素 他们之间有以下区别: 1.块级元素独占一行,除非显示的修改display属性.而内联 ...

  9. Web Site 开发学习

    http://web-source.net/web_design_languages.htm#.Vw4uaeRJmt9 http://www.make-a-web-site.com/web-desig ...

  10. java在继承中父类的成员变量是否会被子类所覆盖

    假如 父类 int num =7:子类 int num =9:父类是否会被子类所覆盖? 给你看两个例子: 第一个例子: 第二个例子: 这两个例子的区别只有一句话   由此证明了子类从父类继承的时候   ...