Javascript: offsettop, offsetleft - снова

imaster

Новичок
Javascript: offsettop, offsetleft - снова

Привет !!!
Просмотрел я сообщения на эту тему, но ответ так и не нашел.
Може поможете.

Задача.
Есть DIV который находится в таблице, position:relative.
Как мне найти его координаты от обекта BODY.

Заранее спасибо
 

Profic

just Profic (PHP5 BetaTeam)
AFAIR, в цикле пока offsetParent != NULL суммировать offsetTop и offsetLeft с потомками
т.е. где-то так
PHP:
while (o != NULL) {
  oTop += o.offsetTop;
  oLeft += o.offsetLeft;
  o = o.offsetParent;
}
 

imaster

Новичок
Profic
Не работает ...

-~{}~ 01.07.05 17:23:

Пример.
<table>
<tr>
<td
<div id="TopMenu" style="positon:relative">Menu</div>
</td>
</tr>
</table>

JavaScript:
el = document.getElementById("TopMenu");
Parent = el.offsetParent;

В итоге Parent="BODY", а не "TD" или "TABLE". Как быть... Вот задачка.

-~{}~ 01.07.05 17:25:

Результат:
el.offsetTop = 0
el.offsetTop = 0
 

Profic

just Profic (PHP5 BetaTeam)
imaster
А кто td закрывать будет?
PHP:
<script language="JavaScript">
/*
dumps an object obj properties in a new window
*/
function objDump (obj, except) {
 var dump = window.open ('about:blank', 'dumpWindow', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=no, width=400, height=400');
 var i;

 dump.document.write ('<h3>Dumping object: ' + obj.toString () + '</h3>');
 for (i in obj) {
  if (except && except.inArray (i)) continue;
  dump.document.write ('<b>' + i + '</b>: ');
  dump.document.write (obj[i] + '<br>');
 }
 document.close ();
 return false;
}
</script>
<table>
<tr>
<td>
<div id="TopMenu" style="positon:relative">Menu</div>
</td>
</tr>
</table>
<script language="JavaScript">
el = document.getElementById("TopMenu");
objDump(el);
</script>
Dumping object: [object HTMLDivElement]
align:
all: [object HTMLCollection]
attributes: [object NamedNodeMap]
childNodes: [object NodeList]
children: [object HTMLCollection]
className:
clientHeight: 19
clientLeft: 0
clientTop: 0
clientWidth: 35
dir:
document: [object HTMLDocument]
firstChild: [object Text]
id: TopMenu
innerHTML: Menu
innerText: Menu
lang:
lastChild: [object Text]
localName: DIV
namespaceURI: null
nextSibling: [object Text]
nodeName: DIV
nodeType: 1
nodeValue: null
offsetHeight: 19
offsetLeft: 1
offsetParent: [object HTMLTableCellElement]
offsetTop: 1
offsetWidth: 35
outerHTML:
Menu

outerText: Menu
ownerDocument: [object HTMLDocument]
parentElement: [object HTMLTableCellElement]
parentNode: [object HTMLTableCellElement]
prefix: null
previousSibling: [object Text]
scrollHeight: 19
scrollLeft: 0
scrollTop: 0
scrollWidth: 35
sourceIndex: 7
style: [object CSSStyleDeclaration]
tagName: DIV
title:
...
а дальше суммируя с style.top и style.left находишь абсолютное смещение
PS. Opera 8.01
 
Сверху