这个问题的难易程度取决于你的对象是如何定位的,以及在文件流中的位置。
如果是想做一个类似于拼图游戏的东西,应当对所有可移动元素全部以CSS进行绝对定位,这样问题的处理要方便的多。
不知这是不是楼主想要的。

解决方案 »

  1.   

    <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>
      

  2.   

    function getIE(e)  //得到控件在网页里的位置对于位于不同层的对象,根据这个函数得出的数据,并不能真实的反映他们的位置,例如本来看起来在相同位置的对象,可是得出的值却相差很大,
    为什么,有什么原因是造成这种结果呢?
      

  3.   

    取得控件的绝对位置
    <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>
    这个函数绝对不会有问题的,你可以试试看。