Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   js: ак узнать положение левого края объекта (https://forum.antichat.xyz/showthread.php?t=63483)

Naydav 05.03.2008 16:18

js: ак узнать положение левого края объекта
 
PHP код:

<div id="newobj"></div>

<
script>
var 
newobj GetElementById("newobj");
</
script

Как узнать положение левого края объекта "newobj"
(от левого края экрана, типа Left )

в стилях "newobj" изначально ничего не указано...

spider-intruder 05.03.2008 16:31

Тип обьекта какой? Кнопка?

Naydav 05.03.2008 16:38

Цитата:

Сообщение от spider-intruder
Тип обьекта какой? Кнопка?

PHP код:

<div id="newobj"></div


spider-intruder 05.03.2008 16:40

b=getElementById("Buttonchik");
alert(b.style.top);
alert(b.style.left);

дело в том что если свойство position не absolute то top и left считаются от контейнера в который вложен обьект.

spider-intruder 05.03.2008 16:41

http://www.quirksmode.org/js/findpos.html

Naydav 05.03.2008 17:04

Цитата:

Сообщение от spider-intruder
b=getElementById("Buttonchik");
alert(b.style.top);
alert(b.style.left);

дело в том что если свойство position не absolute то top и left считаются от контейнера в который вложен обьект.

PHP код:

<script>
var 
newobj   document.getElementById("newobj");
document.write(newobj.left);
</
script>  

<
div id="newobj"></div

alert(newobj.style.top); - вообще ничего не выведет, так в style ничего не указано, я же писал

Naydav 05.03.2008 17:08

все разобрался

document.write(newobjs.offsetLeft);

Helios 05.03.2008 18:06

Для таких случаев, когда не знаешь, какие поля объекта определены:

Код:

var obj = document.getElementById('myobj');

for(i in obj)
{
    docunent.write('obj.' + i + ' = ' + obj[i] + '<br />');
}

Сей нехитрый скриптец выведет всю инфу о конкретном элементе

Naydav 05.03.2008 18:39

PHP код:

function getBounds(element)
{
  var 
left element.offsetLeft;
  var 
top element.offsetTop;
  for (var 
parent element.offsetParentparentparent parent.offsetParent)
  {
    
left += parent.offsetLeft parent.scrollLeft;
    
top += parent.offsetTop parent.scrollTop
  
}
  return {
leftlefttoptopwidthelement.offsetWidthheightelement.offsetHeight};
}

 
left_ getBounds(block1);
 
 
document.write(left_.left); 


В ИЕ вадает -1...

так же как и
PHP код:

block1.offsetLeft 

и что нужно ие?

не работает когда див находиться в таблице в ячейке

пс getBoundingClientRect - тоже не работает

Naydav 05.03.2008 19:27

Полный листинг - в ИЕ не работает :(
PHP код:

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <
tr>
    <
td>
     
<
div id="block2" style="position: absolute; left:0px; top:0px;">block2</div>
<
div id="block1" style="margin-left: 230px;">


<
script>
var 
block1 document.getElementById("block1");
var 
block2 document.getElementById("block2");

function 
getBounds(element)
{
  var 
left element.offsetLeft;
  var 
top element.offsetTop;
  for (var 
parent element.offsetParentparentparent parent.offsetParent)
  {
    
left += parent.offsetLeft parent.scrollLeft;
    
top += parent.offsetTop parent.scrollTop
  
}
  return {
leftlefttoptopwidthelement.offsetWidthheightelement.offsetHeight};
}

var 
bounds getBounds(block1);
alert('Coord: ' +
      
'(' bounds.left ',' bounds.top ') x ' +
      
'(' bounds.width ',' bounds.height ')');


//block2.style.left = '500';
//block2.style.left = block1.offsetLeft+'px';
//block2.style.top = block1.offsetTop+'px';
block2.style.left bounds.left;
block2.style.top =  bounds.top;
</
script>
    
     
     </
td>
  </
tr>
</
table



Время: 02:10