2

XHTML ページに 2 つのアイテムが浮かんでいます。残念ながら、一番右のアイテムのオフセットを取得しようとすると...要素がフロートされていない場合の位置として返されます。

    <div id="Left style="float:right"></div>
    <div id="right" style="float:right"></div> 

    Using Jquery 
    <script type="text/javascript"> 
       var right = $("#right"); 
       alert(right[0].offsetLeft); 
    </script>

私はこのようなことをしなければなりませんか?

function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) 
    {
        do 
        {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;

        } while (obj = obj.offsetParent);
    }
}
4

3 に答える 3

0

ページの位置を見つけようとしているようです。

そうです、次のような関数を使用します。

function aGetElementsPagePosition (zElement)
{
    var iLeftOffset = zElement.offsetLeft; 
    var iTopOffset  = zElement.offsetTop;

    while (zElement = zElement.offsetParent)
    {
        iLeftOffset += zElement.offsetLeft;
        iTopOffset  += zElement.offsetTop;
    }

    return [iLeftOffset, iTopOffset];
}
于 2010-06-09T23:38:09.120 に答える
0

クロスブラウザの方法で、ページ内の要素の位置を取得するために私がすることは次のとおりです。

var tempEl;
var myElement = document.getElementById('#someId');

//cool guys
x = myElement.offsetLeft;
y = myElement.offsetTop;

//IE 7-
if (myElement.hasLayout
    && myElement.offsetParent
    && myElement.offsetParent != document.body
    ) {

    x = 0;
    y = 0;
    tempEl = myElement;

    while (tempEl.parentNode) {

        if (tempEl.currentStyle.hasLayout) {//very important for floated elements
            x += (tempEl.offsetLeft) ? tempEl.offsetLeft : 0;
            y += (tempEl.offsetTop) ? tempEl.offsetTop : 0;
        }

        if (tempEl == document.body) {
            break;
        }

        tempEl = tempEl.parentNode;

    }

}
于 2013-10-02T19:14:11.877 に答える
0

これをやってしまった:

    function findPos(obj) { 
      var pos = new Object();
      pos.x = pos.y = 0;        
      if (obj.offsetParent)  
      { 
        do  
        { 
          pos.x += obj.offsetLeft; 
          pos.y += obj.offsetTop; 
        } while (obj = obj.offsetParent); 
      } 
      return pos;
    } 
于 2010-06-09T23:47:06.423 に答える