Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Определение координат div


Автор: Гость_Sergey 16.11.2004, 21:54
Мне надо сделать привязку одного div с абсолитным позиционированием (id=div1, name=div1) к другому (с относительным, находится в ячейке таблицы, id=div2, name=div2). Для определения координат div2 пользуюсь такой функцией:

Код

getAbsolutePos = function(el) {
var SL = 0, ST = 0;
if (el.scrollLeft)
SL = el.scrollLeft;
if (el.scrollTop)
ST = el.scrollTop;
var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
if (el.offsetParent) {
var tmp = this.getAbsolutePos(el.offsetParent);
r.x += tmp.x;
r.y += tmp.y;
}
return r;
}


Для задания координат div1:
Код

if (navigator.appName.indexOf("Internet Explorer") != -1)
{
div1.style.top = getAbsolutePos(div2).y+document.body.scrollTop-14;
div1.style.left = getAbsolutePos(div2).x+document.body.scrollLeft-6;
}
else
{
div1.style.top = getAbsolutePos(div2).y+window.scrollY-14;
div1.style.left = getAbsolutePos(div2).x+window.scrollX-6;
}


Бывают такие глюки:
1. div1 выводится при первом отображении страницы в произвольном месте (после рефреша становится на место)
2. Под Оперой координата top высчитывается правильно, а left = 0

Почему?


Автор: sergejzr 16.11.2004, 21:57
У меня тоже была такая беда. Попробуйте добавлять "px" в конце.
Т.е например:
Код

div1.style.left = getAbsolutePos(div2).x+window.scrollX-6+"px";

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)