ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

js: ак узнать положение левого края объекта
  #1  
Старый 05.03.2008, 16:18
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
Question js: ак узнать положение левого края объекта

PHP код:
<div id="newobj"></div>

<
script>
var 
newobj GetElementById("newobj");
</
script
Как узнать положение левого края объекта "newobj"
(от левого края экрана, типа Left )

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

  #2  
Старый 05.03.2008, 16:31
Аватар для spider-intruder
spider-intruder
Постоянный
Регистрация: 10.12.2005
Сообщений: 939
Провел на форуме:
3886281

Репутация: 929


Отправить сообщение для spider-intruder с помощью ICQ
По умолчанию

Тип обьекта какой? Кнопка?
 
Ответить с цитированием

  #3  
Старый 05.03.2008, 16:38
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Цитата:
Сообщение от spider-intruder  
Тип обьекта какой? Кнопка?
PHP код:
<div id="newobj"></div
 
Ответить с цитированием

  #4  
Старый 05.03.2008, 16:40
Аватар для spider-intruder
spider-intruder
Постоянный
Регистрация: 10.12.2005
Сообщений: 939
Провел на форуме:
3886281

Репутация: 929


Отправить сообщение для spider-intruder с помощью ICQ
По умолчанию

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

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

  #5  
Старый 05.03.2008, 16:41
Аватар для spider-intruder
spider-intruder
Постоянный
Регистрация: 10.12.2005
Сообщений: 939
Провел на форуме:
3886281

Репутация: 929


Отправить сообщение для spider-intruder с помощью ICQ
По умолчанию

http://www.quirksmode.org/js/findpos.html
 
Ответить с цитированием

  #6  
Старый 05.03.2008, 17:04
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Цитата:
Сообщение от 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 ничего не указано, я же писал
 
Ответить с цитированием

  #7  
Старый 05.03.2008, 17:08
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

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

document.write(newobjs.offsetLeft);
 
Ответить с цитированием

  #8  
Старый 05.03.2008, 18:06
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

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

Код:
var obj = document.getElementById('myobj');

for(i in obj)
{
    docunent.write('obj.' + i + ' = ' + obj[i] + '<br />');
}
Сей нехитрый скриптец выведет всю инфу о конкретном элементе
 
Ответить с цитированием

  #9  
Старый 05.03.2008, 18:39
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

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:03..
 
Ответить с цитированием

  #10  
Старый 05.03.2008, 19:27
Аватар для Naydav
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Полный листинг - в ИЕ не работает
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
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ