js鼠标跟随移动显示表格上某一行的信息(包括表格外的信息)

</pre>部分html代码:<p></p><p></p><pre name="code" class="html"><s:iterator value="#listall" var="list" status="status">
			<tr name="tr">
			<td id="linenum" style="display: none;"><s:property value="#status.index+1"/></td>
				<td>${list.trader.company.companyName }</td>

js代码:

<script type="text/javascript">
		var trnodets = document.getElementsByName("tr");
		for (var i = 0; i < trnodets.length; i++) {
			var trnode = trnodets[i];
			var line=i+1;
			trnode.onmousemove = function(ev) {
				this.style.backgroundColor = "#afaeae";
				var div3=document.getElementById("linshi");
				var linenum=this.getElementsByTagName("td");//获取所有子td标签
				//alert(linenum);
				ev= ev || window.event;
				var mousePos = mouseCoords(ev);
				var div1 = document.createElement("td");//创建一个td标签
				div1.id="linshi";
				div1.style.width="300px";
				div1.style.height="20px";
				div1.style.backgroundColor = "#afaeae";
				div1.style.border="thick solid #0000FF";
				div1.innerHTML="第"+linenum[0].innerHTML+"行;x:"+mousePos.x+";y:"+mousePos.y;
				div1.style.position="absolute";//绝对布局
				div1.style.left=mousePos.x+"px";//鼠标横位置
				div1.style.top=mousePos.y+25+"px";
				if (div3 == null){
					this.appendChild(div1);//添加
				}else {
					div3.parentNode.replaceChild(div1,div3);//替换
				}
			} 
			trnode.onmouseout = function() {
				this.style.backgroundColor = "";
				var div3=document.getElementById("linshi");
				if (div3 != null)
				div3.parentNode.removeChild(div3);
			}
			
		}

		function mouseCoords(ev)
		{
		 if(ev.pageX || ev.pageY){
		   return {x:ev.pageX, y:ev.pageY};
		 }
		 return {
		     x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		     y:ev.clientY + document.body.scrollTop     - document.body.clientTop
		 };
		}
	</script>

------------------------------2015-10-20添加----------------------------

为了更方便的对任意一个表格的操作,可以为指定id的table进行设置

之前mouseCoords的函数得到的xy坐标在ie和谷歌的浏览器上存在一定的兼容性对,显示的数值并不一样,百度一下找到了替代

代码如下:

function showDialog(table_id){
		var data_table = document.getElementById(table_id);
		if (data_table == null) return;
		var trnodets = data_table.getElementsByTagName("tr");
		for (var i = 1; i < trnodets.length; i++) {
			var trnode = trnodets[i];
			trnode.onmousemove = function(ev) {
				this.style.backgroundColor = "#e0e0e0";
				var div3=document.getElementById("linshi");
				var linenum=this.getElementsByTagName("td");//获取所有子td标签
				//alert(linenum);
				ev= ev || window.event;
				var mousePos = mouseCoords(ev);
				var div1 = document.createElement("div");//创建一个td标签
				div1.id="linshi";//为创建的td标签设置id
				div1.style.width="250px";
				div1.style.height="100px";
				div1.style.backgroundColor = "#fff";
				div1.style.border="1px solid #75878a";
				div1.innerHTML="报价编号:"+linenum[0].innerHTML+"<br />报价机构:"+linenum[1].innerHTML+"<br />交易员:"+linenum[2].innerHTML+"<br />联系方式:"+linenum[3].innerHTML;
				div1.style.position="absolute";//绝对布局
				//div1.style.left=mousePos.x+"px";//鼠标横位置
				//div1.style.top=mousePos.y+25+"px";
				div1.style.left=mousePos.x+"px";//鼠标横位置
				div1.style.top=mousePos.y+25+"px";
				var body1=document.getElementsByTagName("body");
				if (div3 == null){
					body1[0].appendChild(div1);//添加
				}else {
					div3.parentNode.replaceChild(div1,div3);//替换
				}
			} 
			trnode.onmouseout = function() {
				this.style.backgroundColor = "";
				var div3=document.getElementById("linshi");
				if (div3 != null)
				div3.parentNode.removeChild(div3);
			}
			
		}
	
		function mouseCoords(event)
		{
		 /* if(ev.pageX || ev.pageY){
		   return {x:ev.pageX, y:ev.pageY};
		 }
		 return {
		     x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		     y:ev.clientY + document.body.scrollTop     - document.body.clientTop
		 }; */
			var e = event || window.event;
	        var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
	        var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
	        var x = e.pageX || e.clientX + scrollX;
	        var y = e.pageY || e.clientY + scrollY;
	        //alert('x: ' + x + '\ny: ' + y);
	        return { 'x': x, 'y': y };
		}
	}


只需要类似showDialog("data_table");、showDialog("tuijian_table");的调用方式就可以了





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值