function getAbsPosition(obj)   {   
  var abs={x:0,y:0}   
  while(obj!=document.body && obj.offsetParent!=null){   
  abs.x+=obj.offsetLeft;   
  abs.y+=obj.offsetTop;   
  obj=obj.offsetParent;   
  }   
  return abs;   
  }function showOtherInfoToDiv(obj,du,gx,ft,db){ var abs =  getAbsPosition(obj);
document.getElementById('allRoomDyInfo').style.left = abs.x;
document.getElementById('allRoomDyInfo').style.top = abs.y+30; 这样的写法。相对于父系的原点。 在IE正常为什么在FF里都跑到浏览器的原点了不在父系原点请问各位怎么改未能

解决方案 »

  1.   

    如果父节点也设置了position,则正确的坐标是 pos(目标节点)+pos(父节点)
      

  2.   

    貌似是 减:easyUI.getPosition(domobj)
        取元素坐标,如元素或其上层元素设置position relative,应该getPosition(子元素).y-getPosition(父元素).y
        参数:DOM元素
        返回值:{x:value,y:value}
      

  3.   

    这两句有问题,不加“px”firefox会自动识别单位为像素,其他浏览器不一定(尤其是IE)document.getElementById('allRoomDyInfo').style.left = abs.x + "px"; 
    document.getElementById('allRoomDyInfo').style.top = (abs.y+30) + "px";
    另,给你做了一个示例:<style type="text/css">
        #target {
            border: 1px solid #9f9f9f; width: 200px; height: 30px;
        }
        #layer {
            width: 200px; height: 220px; border: 1px dotted #0066cc
        }
    </style>
    <div id="layer" style="position: absolute; left:100px; top: 300px">Floating div</div>
    <input type="button" value="Click me to position div" onclick="getXY();" />
    Check if you want to position here? <input type="text" id="target" />
    <script>
    function getXY() {
        var t = document.getElementById('target'),
            l = document.getElementById('layer'),
            x = 0, y = 0;
        while(t.tagName != 'BODY') {
            x += t.offsetLeft;
            y += t.offsetTop;
            t = t.offsetParent;
        }
        l.style.left = x;// + "px";
        l.style.top  = (y + 30);// + "px"; 
    }
    </script>