Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 13.08.2011, 13:08
Аватар для evgenybe
Интересующийся
Отправить личное сообщение для evgenybe Посмотреть профиль Найти все сообщения от evgenybe
 
Регистрация: 07.05.2011
Сообщений: 23

Сообщение от melky Посмотреть сообщение
сладко, очень сладко звучит



прошу сюда html!

кстати, код можно было и нагуглить(это не мой код):

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

или вот еще
var el = document.getElementById('login');
var x = findPosX(el);
var y = findPosY(el);
 
function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (1) {
            curleft+=obj.offsetLeft;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.x) {
        curleft+=obj.x;
    }
    return curleft;
}
 
function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (1) {
            curtop+=obj.offsetTop;
            if (!obj.offsetParent) {
                break;
            }
            obj=obj.offsetParent;
        }
    } else if (obj.y) {
        curtop+=obj.y;
    }
    return curtop;
}


а вот пример и статья от этого сайта
Написал практически то же самое. Только алерты вставил.

Код:
    function findPosY(obj) {
        var curtop = 0;
        alert("2-y");
        if (obj.offsetParent) {

            while (1) {
                curtop += obj.offsetTop;
                if (!obj.offsetParent) {
                    break;
                }
                obj = obj.offsetParent;
            }
        } else if (obj.y) {
            alert("3-y");
            curtop += obj.y;
        }
        alert("4-y");
        return curtop;
    }
Первый alert("2-y"); срабатывает. А остальные нет. Следовательно из-за какой-то ошибки код туда не доходит. Подскажите, пожалуйста, что за ошибка
Ответить с цитированием
  #22 (permalink)  
Старый 13.08.2011, 13:43
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от evgenybe
Первый alert("2-y"); срабатывает. А остальные нет. Следовательно из-за какой-то ошибки код туда не доходит. Подскажите, пожалуйста, что за ошибка
В вашем варианте скорее единственное это то что цикл while никогда не заканчивается, следовательно и alert'ы и не срабатывают. Возможно в цикле просто возникает ошибка и код останавливается, может просто не у всех есть offsetTop, это единственное объяснение, либо offsetParent присутствует всегда, что мало вероятно.
Ответить с цитированием
  #23 (permalink)  
Старый 13.08.2011, 14:46
Аватар для evgenybe
Интересующийся
Отправить личное сообщение для evgenybe Посмотреть профиль Найти все сообщения от evgenybe
 
Регистрация: 07.05.2011
Сообщений: 23

Сообщение от devote Посмотреть сообщение
В вашем варианте скорее единственное это то что цикл while никогда не заканчивается, следовательно и alert'ы и не срабатывают. Возможно в цикле просто возникает ошибка и код останавливается, может просто не у всех есть offsetTop, это единственное объяснение, либо offsetParent присутствует всегда, что мало вероятно.
Ошибка возникает вот здесь:
if (obj.offsetParent)
Потому что сразу ни в if, ни в else алерты уже не срабатывают.

Как можно исправить?
Ответить с цитированием
  #24 (permalink)  
Старый 13.08.2011, 15:20
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

if (obj && obj.offsetParent) {
} else if (obj && obj.y) {
}
Ответить с цитированием
  #25 (permalink)  
Старый 13.08.2011, 15:30
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

function findPosY(obj) {
    if ( !obj ) return 0;
    var curtop = 0;
    if ( obj.offsetParent ) {
        while (1) {
            curtop += obj.offsetTop;
            if ( !( obj = obj.offsetParent ) ) {
                break;
            }
        }
    } else if ( obj.y ) {
        curtop += obj.y;
    }
    return curtop;
}
Ответить с цитированием
  #26 (permalink)  
Старый 14.08.2011, 15:32
Аватар для evgenybe
Интересующийся
Отправить личное сообщение для evgenybe Посмотреть профиль Найти все сообщения от evgenybe
 
Регистрация: 07.05.2011
Сообщений: 23

Сообщение от melky Посмотреть сообщение
firebug в этом плане намного удобнее.
и дебаггер там есть
попробуйте
Так ведь это для браузера FireFox! А у меня Google Chrom
Ответить с цитированием
  #27 (permalink)  
Старый 14.08.2011, 15:42
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Сообщение от evgenybe
Так ведь это для браузера FireFox! А у меня Google Chrom
В хроме есть все тоже самое. Пишете в js строчку debugger, F5, и вперед отлаживать.
Ответить с цитированием
  #28 (permalink)  
Старый 14.08.2011, 15:55
Аватар для evgenybe
Интересующийся
Отправить личное сообщение для evgenybe Посмотреть профиль Найти все сообщения от evgenybe
 
Регистрация: 07.05.2011
Сообщений: 23

Сообщение от devote Посмотреть сообщение
function findPosY(obj) {
    if ( !obj ) return 0;
    var curtop = 0;
    if ( obj.offsetParent ) {
        while (1) {
            curtop += obj.offsetTop;
            if ( !( obj = obj.offsetParent ) ) {
                break;
            }
        }
    } else if ( obj.y ) {
        curtop += obj.y;
    }
    return curtop;
}
Я уж надоел всем, наверное.
Но ничего до сих пор не работает.
Если я делаю div, а внутри него GridView, то вообще не работает.
Если я делаю div, а внутри него еще div (с именем DivIn), а уж в нем GridView, то тогда координату Y я получаю. Но независимо от положения скролла самого наружного дива, результат в любом случае одно и то же число.
Ответить с цитированием
  #29 (permalink)  
Старый 14.08.2011, 22:00
Аватар для evgenybe
Интересующийся
Отправить личное сообщение для evgenybe Посмотреть профиль Найти все сообщения от evgenybe
 
Регистрация: 07.05.2011
Сообщений: 23

Сообщение от ваый Посмотреть сообщение
В хроме есть все тоже самое. Пишете в js строчку debugger, F5, и вперед отлаживать.
Так в том-то и проблема - ставлю debugger, нажимаю F5 и... и не останавливается.
Ответить с цитированием
  #30 (permalink)  
Старый 14.08.2011, 23:19
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Сообщение от evgenybe
Так в том-то и проблема - ставлю debugger, нажимаю F5 и... и не останавливается.
Консоль-то открыть надо предварительно (F12).
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как менять позицию элемента? Заданую через position:absolute; left:100px; top:200px; aRpi Общие вопросы Javascript 3 24.04.2011 08:42
Как получить позицию начала выделения? @LEXXX_NF Events/DOM/Window 3 28.08.2009 10:28
установка позиции курсора или выделения в iframe mister_maxim Events/DOM/Window 5 18.04.2009 10:43