Как определить координаты объекта (картинки, табл., ячейки)
От: Аноним  
Дата: 04.01.03 09:42
Оценка:
Как определить координаты объекта (картинки, таблицы, ячейки) относительно окна.
Re: Как определить координаты объекта (картинки, табл., ячей
От: andik  
Дата: 04.01.03 14:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как определить координаты объекта (картинки, таблицы, ячейки) относительно окна.


<html>
<head>
   <title>Untitled</title>
</head>

<script>


  function getOffset(el, which) {
    var amount = el["offset" + which] 
    el = el.offsetParent
    while (el != null) {
      amount += el["offset" + which]
      el = el.offsetParent
    }
    return amount
  }
  
</script>
<body>

<table border="1" width="100%">
 <tr>
  <td onmouseover="alert(getOffset(this, 'Top')); alert(getOffset(this, 'Left'));>Test1</td>
 </tr>
</table>
</body>
</html>
Как определить координаты объекта в IE
От: DSD Россия http://911.ru/cv
Дата: 04.01.03 14:50
Оценка: 8 (3)
#Имя: FAQ.web.getcoords
Здравствуйте, Аноним, Вы писали:

А>Как определить координаты объекта (картинки, таблицы, ячейки) относительно окна.


В IE это можно сделать вот этими двумя функциями:

  function GetAbsTop(_obj) {
     var _top=0;
     var _parent=_obj;
         _top+=_parent.offsetTop;
         _top+=_parent.clientTop;
     do {
         _parent=_parent.offsetParent;
         _top+=_parent.offsetTop;
         _top+=_parent.clientTop;
     } while (_parent!==document.body);
     return _top-document.body.scrollTop;
  }

  function GetAbsLeft(_obj) {
     var _left=0;
     var _parent=_obj;
         _left+=_parent.offsetLeft;
         _left+=_parent.clientLeft;
     do {
         _parent=_parent.offsetParent;
         _left+=_parent.offsetLeft;
         _left+=_parent.clientLeft;
     } while (_parent!==document.body);
     return _left-document.body.scrollLeft;
  }



Передаешь свой обьект(картинку, таблицу, ячейку) параметром _obj, и оно тебе выдаст координату Top или Left относительно окна.

А можно чуть модифицировать для производительности(обе координаты за один проход цикла):

  function GetAbsCoords(_obj) {
     var _top=0;
     var _left=0;
     var _parent=_obj;
         _top+=_parent.offsetTop;
         _top+=_parent.clientTop;
         _left+=_parent.offsetLeft;
         _left+=_parent.clientLeft;
     do {
         _parent=_parent.offsetParent;
         _top+=_parent.offsetTop;
         _top+=_parent.clientTop;
         _left+=_parent.offsetLeft;
         _left+=_parent.clientLeft;
     } while (_parent!==document.body);
     return [_top-document.body.scrollTop, _left-document.body.scrollLeft];
  }


тогда к примеру:


  var MyTableCoords = GetAbsCoords(MyTable);
  var MyTableAbsTop = MyTableCoords[0];
  var MyTableAbsLeft = MyTableCoords[1];
--
DSD
Re: Как определить координаты объекта в IE
От: Аноним  
Дата: 13.03.06 17:56
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, Аноним, Вы писали:


А>>Как определить координаты объекта (картинки, таблицы, ячейки) относительно окна.


DSD>В IE это можно сделать вот этими двумя функциями:

DSD>

DSD>  function GetAbsTop(_obj) {
DSD>     var _top=0;
DSD>     var _parent=_obj;
DSD>         _top+=_parent.offsetTop;
DSD>         _top+=_parent.clientTop;
DSD>     do {
DSD>         _parent=_parent.offsetParent;
DSD>         _top+=_parent.offsetTop;
DSD>         _top+=_parent.clientTop;
DSD>     } while (_parent!==document.body);
DSD>     return _top-document.body.scrollTop;
DSD>  }

DSD>  function GetAbsLeft(_obj) {
DSD>     var _left=0;
DSD>     var _parent=_obj;
DSD>         _left+=_parent.offsetLeft;
DSD>         _left+=_parent.clientLeft;
DSD>     do {
DSD>         _parent=_parent.offsetParent;
DSD>         _left+=_parent.offsetLeft;
DSD>         _left+=_parent.clientLeft;
DSD>     } while (_parent!==document.body);
DSD>     return _left-document.body.scrollLeft;
DSD>  }

DSD>



DSD>Передаешь свой обьект(картинку, таблицу, ячейку) параметром _obj, и оно тебе выдаст координату Top или Left относительно окна.


DSD>А можно чуть модифицировать для производительности(обе координаты за один проход цикла):

DSD>

DSD>  function GetAbsCoords(_obj) {
DSD>     var _top=0;
DSD>     var _left=0;
DSD>     var _parent=_obj;
DSD>         _top+=_parent.offsetTop;
DSD>         _top+=_parent.clientTop;
DSD>         _left+=_parent.offsetLeft;
DSD>         _left+=_parent.clientLeft;
DSD>     do {
DSD>         _parent=_parent.offsetParent;
DSD>         _top+=_parent.offsetTop;
DSD>         _top+=_parent.clientTop;
DSD>         _left+=_parent.offsetLeft;
DSD>         _left+=_parent.clientLeft;
DSD>     } while (_parent!==document.body);
DSD>     return [_top-document.body.scrollTop, _left-document.body.scrollLeft];
DSD>  }

DSD>


DSD>тогда к примеру:


DSD>

DSD>  var MyTableCoords = GetAbsCoords(MyTable);
DSD>  var MyTableAbsTop = MyTableCoords[0];
DSD>  var MyTableAbsLeft = MyTableCoords[1];

DSD>


Только что проверил твой скрипт — не работает ни в IE, ни в Opera, ни в Firefox

Пример, на котором этот скрипт не работает заключается примерно в следующем:

В body таблица width=100% height=100% с одной ячейкой с вертикальным и горизонтальным центрированием.
В этой ячейке есть таблица неизвестной ширины и высоты (растягивается контентом) — тоже с одной ячейкой.
В этой таблице есть форма, на ней несколько input-ов.
Координаты этих input-ов определяются неправильно... совершенно неправильно (по вертикали ошибка в сотни пикселей, по горизонтали где-то в 10).
Re[2]: Как определить координаты объекта в IE
От: DSD Россия http://911.ru/cv
Дата: 14.03.06 09:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Только что проверил твой скрипт — не работает ни в IE, ни в Opera, ни в Firefox


А>Пример, на котором этот скрипт не работает заключается примерно в следующем:


А>В body таблица width=100% height=100% с одной ячейкой с вертикальным и горизонтальным центрированием.

А>В этой ячейке есть таблица неизвестной ширины и высоты (растягивается контентом) — тоже с одной ячейкой.
А>В этой таблице есть форма, на ней несколько input-ов.
А>Координаты этих input-ов определяются неправильно... совершенно неправильно (по вертикали ошибка в сотни пикселей, по горизонтали где-то в 10).
вот вместо избыточного цитирования лучше бы ты исходник своего примера сюда запузырил. а то по твоему описанию его собирать не вижу особого смысла и нет времени.
--
DSD
Re: Как определить координаты объекта в IE
От: Аноним  
Дата: 18.04.06 01:30
Оценка:
Здравствуйте, DSD, Вы писали:

Интересный оператор !==

_parent!==document.body

Re[2]: Как определить координаты объекта в IE
От: kan_izh Великобритания  
Дата: 18.04.06 10:55
Оценка: +1
Аноним wrote:

> Интересный оператор !==

> _parent!==document.body
strict equality operator
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: Как определить координаты объекта в IE
От: DSD Россия http://911.ru/cv
Дата: 18.04.06 12:35
Оценка:
Здравствуйте, DSD, Вы писали:

исходник обновлен, искать тут: http://www.rsdn.ru/Forum/?mid=1852477
Автор: DSD
Дата: 17.04.06
--
DSD
Re: Как определить координаты объекта (картинки, табл., ячей
От: anonymous Россия http://denis.ibaev.name/
Дата: 18.04.06 13:02
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как определить координаты объекта (картинки, таблицы, ячейки) относительно окна.


http://xpoint.ru/know-how/JavaScript/PoleznyieFunktsii#OpredelenieKoordinatYelementaN
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.