如何判断两个对象的相对位置?即一个对象是在另外的一个上边还是下边,左边还是右边。

signboy 2002-09-04 06:11:33
如何判断两个对象的相对位置?即一个对象是在另外的一个上边还是下边,左边还是右边。

参考一下http://www.csdn.net/expert/topic/995/995028.xml?temp=.420788
...全文
51 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
meizz 2002-09-05
  • 打赏
  • 举报
回复
<div>
<table border=1>
<tr><td><input type=button name=b1 value=b1 onclick="bb(this)"></td><td></td>
<td><input type=button name=b2 value=b2 onclick="bb(this)"></td></tr>
<tr><td></td><td><input type=button name=b3 onclick="bb(this)" value=b3></td>
<td><input type=button name=b4 value=b4 onclick="bb(this)"></td></tr>
</table></div>

<input type=hidden name=h1><input type=hidden name=h2>

<script language=javascript>
var T,L;
function bb(tt) //将你所要比较的两个控件名放到两个隐藏框里
{
var a1 = document.all.h1.value;
var a2 = document.all.h2.value;
if(a1 != "" && a2 != ""){alert("你已经选择了两个控件!");return;};
if(a1=="") document.all.h1.value = tt.name;
else {document.all.h2.value = tt.name; cc();}
//alert("1."+document.all.h1.value+" 2."+document.all.h2.value);
}
function cc()
{
var a1 = document.all.h1.value;
var a2 = document.all.h2.value;
if(a1 == "" && a2 == ""){alert("你没有选足两个控件");return;}

var e1 = eval("document.all."+a1)
getIE(e1) //得到第一个控件的位置
var x1 = L; var y1 = T;

var e2 = eval("document.all."+a2)
getIE(e2) //得到第二个控件的位置
var x2 = L; var y2 = T;

document.all.h1.value = "";
document.all.h2.value = "";

var s1,s2;
if (x1 > x2) s1 = "控件 "+e1.name+" 在控件 "+e2.name+" 的 右 边";
if (x1 < x2) s1 = "控件 "+e1.name+" 在控件 "+e2.name+" 的 左 边";
if (x1 == x2) s1 = "控件 "+e1.name+" 与控件 "+e2.name+" 的左边是相等的";
if (y1 > y2) s2 = "控件 "+e1.name+" 在控件 "+e2.name+" 的 下 边";
if (y1 < y2) s2 = "控件 "+e1.name+" 在控件 "+e2.name+" 的 上 边";
if (y1 == y2) s2 = "控件 "+e1.name+" 与控件 "+e2.name+" 是一样高的";
alert(s1+"\r\n"+s2);
}
function getIE(e) //得到控件在网页里的位置
{
T = e.offsetTop;
L = e.offsetLeft;
while(e=e.offsetParent)
{
T += e.offsetTop;
L += e.offsetLeft;
}
}
</script>
meizz 2002-09-05
  • 打赏
  • 举报
回复
取得控件的绝对位置
<script language="Javascript">
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"\nleft="+l);
}
</script>
这个函数绝对不会有问题的,你可以试试看。
signboy 2002-09-05
  • 打赏
  • 举报
回复
function getIE(e) //得到控件在网页里的位置

对于位于不同层的对象,根据这个函数得出的数据,并不能真实的反映他们的位置,例如本来看起来在相同位置的对象,可是得出的值却相差很大,
为什么,有什么原因是造成这种结果呢?
方工 2002-09-04
  • 打赏
  • 举报
回复
这个问题的难易程度取决于你的对象是如何定位的,以及在文件流中的位置。
如果是想做一个类似于拼图游戏的东西,应当对所有可移动元素全部以CSS进行绝对定位,这样问题的处理要方便的多。
不知这是不是楼主想要的。
signboy 2002-09-04
  • 打赏
  • 举报
回复
?upup

87,996

社区成员

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

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