Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение координатов объекта 
:(
    Опции темы
Noodly
Дата 4.10.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 12.9.2009

Репутация: нет
Всего: нет



Есть картинка 

<img id="hey" src="./img/sklad.gif">

И есть функция для получения ее координаты икс:  

function getAbsolutePosition(el) {
    var r = { x: el.offsetLeft, y: el.offsetTop };
    if (el.offsetParent) {
        var tmp = getAbsolutePosition(el.offsetParent);
        r.x += tmp.x;
        r.y += tmp.y;
    }
    return r;
}

Если вызывать функцию так:
<a href="javascript:alert(getAbsolutePosition(document.getElementById('hey')).x)">Вычислить координаты слоя!</a>

То она отлично работает. Выдает 300. 
А если я хочу присовить число ее координат другому объекту с помощью:

var startX = getAbsolutePosition(document.getElementById('hey');

То  alert(startX)  выдает значение ноль. Обясните в чем ошибка. 


Это сообщение отредактировал(а) Noodly - 4.10.2009, 15:12
PM MAIL   Вверх
Amphiluke
Дата 4.10.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Цитата(Noodly @  4.10.2009,  15:11 Найти цитируемый пост)
var startX = getAbsolutePosition(document.getElementById('hey');


Для начала напишите без ошибок (!), как присваиваете результат функции переменной startX. Во-вторых, имейте в виду, что функция возвращает объект, поэтому alert(startX) покажет [object Object].

Ищите ошибку в своем коде — всё работает при должной аккуратности.
Код

<html>
<head>
<title>qwerty</title>
</head>
<body>
<img id="hey" alt="" src="./img/sklad.gif">
<script type="text/javascript">
function getAbsolutePosition(el) {
    var r = { x: el.offsetLeft, y: el.offsetTop };
    if (el.offsetParent) {
        var tmp = getAbsolutePosition(el.offsetParent);
        r.x += tmp.x;
        r.y += tmp.y;
    }
    return r;
}
var startX = getAbsolutePosition(document.getElementById('hey'));
alert(startX.x);
</script>
</body>
</html>

PM   Вверх
Noodly
Дата 4.10.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 12.9.2009

Репутация: нет
Всего: нет



Собственно да. Ваш код работает. Но когда засовываешь картинку в таблицу, почему-то опять выдает ноль. 
Вот: http://sybyrskiy-valenok.narod.ru/here.html

Картинка "Склад СЗЧ"
PM MAIL   Вверх
Amphiluke
Дата 4.10.2009, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Вообще, конечно, оригинально оформлен там код... O_o 
Нет даже обязательных дескрипторов <html>, <head>, <body>... Сразу <table>, как топором отрубили! Вообще, страшно, уж простите.
Оформите html-код как следует, без этого точно не будет работать так, как должно. Для IE, возможно, придется перенести все действия, которые должны выполняться после открытия документа, в функцию, которую назначить в качестве обработчика события onload для body.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.