关于鼠标位于table的竖线上的响应问题-100分..能回答的拿吧.

北京不不 2006-11-17 04:24:11
<table id="b">
<tr>
<td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td>
</tr>
</table>
当我把鼠标放在他的竖线上也就是组成表格的横线..改变其鼠标标志为hand
...全文
631 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
北京不不 2006-11-20
  • 打赏
  • 举报
回复
20分给 muxrwc(王辰) ( ) 信誉: 他跟贴很热心。也参与了答问。
15分给 Amwpfiqvy : 他也答题了。效果不行。比上一个少5分。他么他积极。
50 chaoliu1 :是少了点。你发条CSDN短信给我。我再去开帖
其他人总不能让人空着回去。
北京不不 2006-11-20
  • 打赏
  • 举报
回复
chaoliu1(潮流)你要是认为分还少了。。向我索取吧。要不你不跟贴了。。那我很久都不结贴了。
muxrwc 2006-11-20
  • 打赏
  • 举报
回复
忽忽。。我又溜达回来啦。。
他的思路大概获取TD的高宽,然后当鼠标经过TD的时候判断离左边有多少的距离,在某定距离内就变光标。。。
忽忽。。不过代码仔细看因为不会event。。忽忽温柔的去啦。
北京不不 2006-11-20
  • 打赏
  • 举报
回复
你的效果是正确的。~~你能稍微解释下么。。。分大部分给你。。
北京不不 2006-11-20
  • 打赏
  • 举报
回复
chaoliu1(潮流)你解释下你的思路。。判断思路。。。。
北京不不 2006-11-20
  • 打赏
  • 举报
回复
chaoliu1(潮流) ( ) 信誉:100 Blog
跟贴来了。
chaoliu1 2006-11-20
  • 打赏
  • 举报
回复
obj.parentElement--是引用 某对象的父元素,就是上一级元素。
例:td的parent通常是tr,tr上一级又是table

因为大部分地方都是td,当td的间距改成1时,2个td之间那1像素才是table,所以用obj.parentElement来获得table对象。

思路就是

1。不停判断鼠标位置
2。if(Math.abs(x1-l)<=2 || Math.abs(x1-l-w)<=2)return true;
如果(鼠标离左线,或离右线的距离小于2像素) 改手形

结果就是鼠标移动竖线周围4像素时,变手
可西哥 2006-11-20
  • 打赏
  • 举报
回复
还真是这个思路啊。
当时怕麻烦,不敢按这个思路做下去.
收藏了.
discover7 2006-11-18
  • 打赏
  • 举报
回复
ding!
yougucao379548695 2006-11-18
  • 打赏
  • 举报
回复
搞定没?
addwing 2006-11-18
  • 打赏
  • 举报
回复
...
Apq001 2006-11-17
  • 打赏
  • 举报
回复
这是我的代码经完善后的样子,将其用 attachEven/属性 绑定到任意table对象的相应事件即可即可,函数内容可以一字不改。

function table_onmousemove()
{
event.srcElement.parentNode.parentNode.style.cursor = "auto";
}
function table_onmouseover()
{
if(event.fromElement && event.toElement &&
event.fromElement.tagName =="TD" && event.toElement.tagName =="TD" &&
event.fromElement.parentNode.rowIndex == event.toElement.parentNode.rowIndex )
{
event.fromElement.parentNode.parentNode.style.cursor = "hand";
}
}
chaoliu1 2006-11-17
  • 打赏
  • 举报
回复
表格位置、大小千变万化,怎么楼上要保存固定表格的线条位置吗?
wideroad 2006-11-17
  • 打赏
  • 举报
回复
我觉得最好的就是维护一张横线间隙的数据表,然后鼠标移动的时候判断是否在这些数据之内
doggod2008 2006-11-17
  • 打赏
  • 举报
回复
我copy你的代码也就5秒而已。呵呵
Apq001 2006-11-17
  • 打赏
  • 举报
回复
不过,我用时也就20分钟左右。呵呵。
Apq001 2006-11-17
  • 打赏
  • 举报
回复
利用两个事件,事件用于Table:
function table_onmousemove()
{
table.style.cursor = "auto";//恢复鼠标为普通样式
}
function table_onmouseover()
{
if(event.fromElement && event.toElement &&
event.fromElement.tagName =="TD" && event.toElement.tagName =="TD" &&
event.fromElement.parentNode.rowIndex == event.toElement.parentNode.rowIndex )
{
table.style.cursor = "hand";//设为手形
}
}
============
相信都能看懂怎么用这两个函数吧?
Apq001 2006-11-17
  • 打赏
  • 举报
回复
我也研究出一种方案。
但我这个方案目前还不能让放到表格左右框的时候也出现手形。
chaoliu1 2006-11-17
  • 打赏
  • 举报
回复
太急,有点错误。最左和最右没判断到。

改成:

function pos() {
var obj=event.srcElement;t=0;l=0;w=0;h=0;x1=0;y1=0;
for(var i=0;i<10;i++)if(obj.tagName!=="TABLE")obj=obj.parentElement;
w=event.srcElement.offsetWidth;
h=event.srcElement.offsetHeight;
t=obj.offsetTop+event.srcElement.offsetTop;
l=obj.offsetLeft+event.srcElement.offsetLeft;
x1=event.x+document.body.scrollLeft;
y1=event.y+document.body.scrollTop;
window.status="离左线"+Math.abs(x1-l)+",离右线"+Math.abs(x1-l-w)+", x="+x1+",y="+y1+", "+event.srcElement.tagName+event.srcElement.innerText;
if(Math.abs(x1-l)<=2 || Math.abs(x1-l-w)<=2)return true;
return false;
}


你们先研究讨论,我得回家吃饭了。
chaoliu1 2006-11-17
  • 打赏
  • 举报
回复
IE6中通过了,楼主自己去看吧。

花去我2小时。 如果你还有颗仁慈的心,请多加些分吧。 不然太打击我



<head>
<STYLE>
body{background-color:background;margin:10}
table{border-collapse:collapse;myhyli:expression(this.cellSpacing=0);background-color:#aaffaa}
TD{border-left:1 solid #000000;border-right:1 solid #000000;border-top:1 solid #100000;border-bottom:1 solid #100000;}
</style>
</head>
<body>
<table width=400 height=300 id='b'">
<tr>
<td>a</td><td>a</td><td>a</td>
</tr>
<tr>
<td>b</td><td>b</td><td>b</td>
</tr>
<tr>
<td>c</td><td>c</td><td>c</td>
</tr>
</table>
</body>
<script language=javascript>
function f(){
if(pos()){
document.body.style.cursor="hand";}
else{
document.body.style.cursor="";
}
}


function pos() {
var obj=event.srcElement;t=0;l=0;w=0;h=0;x1=0;y1=0;
for(var i=0;i<10;i++)if(obj.tagName!=="TABLE")obj=obj.parentElement;
w=obj.offsetWidth;
h=obj.offsetHeight;
t=obj.offsetTop+event.srcElement.offsetTop;
l=obj.offsetLeft+event.srcElement.offsetLeft;
x1=event.x+document.body.scrollLeft;
y1=event.y+document.body.scrollTop;
window.status="离最近竖线还有"+Math.abs(x1-l)+",x="+x1+",y="+y1+","+event.srcElement.tagName+event.srcElement.innerText;
if(Math.abs(x1-l)<=3 || Math.abs(x1-l+w)<=3)return true;
return false;
}

//遍历
var tds = document.getElementsByTagName("TD");
for(var i=0; i<tds.length; i++ )
{
tds[i].innerText=i;
tds[i].attachEvent("onmousemove",f);


}
</script>
加载更多回复(21)

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧