2010-06-09 3 views
2

У меня есть два элемента, которые я плаваю прямо на моей странице XHTML. К сожалению, когда я пытаюсь получить смещение правого самого элемента ... он возвращается как позиция, в которой элемент находился бы, если бы он не был перемещен.Плавающие и смещенные Значения Javascript

<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); 
    } 
} 
+2

Как вы получаете смещение самого правого элемента? –

+0

И добавить к вышесказанному комментарию: какие правила CSS вы используете для стилей этих div? Короче: есть ли у вас примерная страница (HTML/CSS/JS), чтобы мы могли видеть, что вы пробовали до сих пор? –

+0

на SO, мы так здорово, что у вас должен быть волшебный шар! ;) –

ответ

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]; 
} 
+0

Вы должны проверить hasLayout в IE7-. См. Мой ответ для более подробной информации. –

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

    } 

} 
Смежные вопросы