Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Проблема с обращением к свойству left


Автор: Хоббит 31.7.2006, 18:17
Нужно сделать поле, в нем 2 фотки, поле (размером с одну фотку), нужно так чтобы можно было листить фотки кнопками впрво влево ...
вот код

Код

        <div id = "FotoListContainer">
          <div id = "FotoListBlock">
            <div id = "FotoBlock">
              <img src = "/images/foto1.gif" width = "129" height = "96" />
            </div>

            <div id = "FotoBlock">
              <img src = "/images/foto2.gif" width = "129" height = "96" />
            </div>
          </div>
          <div id = "FotoListControl">
            <a href = "javascript:(back())">Назад</a><a href = "javascript:forvard()">Вперед</a>
          </div>



вот css

Код

#FotoListContainer
{
  overflow: hidden;
  background-color: #99CCFF;
  border: 1px solid #000000;
  width: 300px;
  height: 150px;
}

#FotoListBlock
{
 position: relative;
 left: 0px; 
 top: 0px;
 float: left;
}

#FotoBlock
{
  padding: 0px;
  margin: 0px;
  float: left;
}

#FotoListControl
{
  clear: both;
}



проблема в том, что нужно по нажатию определить относителное полоджение элемента FotoListBlock
document.getElementById('FotoListBlock').style.left возвращает undefined
document.getElementById('FotoListBlock').offsetLeft _ возвращает абсолютное значение ...

какие будут предложения... как ваще хранить положение элемента (то есть как глобальную переменную сделать)

все определяется в теге <script ...></script> в теле html  ... (не в заголовке) 

Автор: Burrr 31.7.2006, 18:50
Для определения top-left координат блока использую ф-ию absPosition, вот пример её работы с хэтемэлём:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Coor</title>
    <script>
    function absPosition(obj) { // Опрелеляем top - left координаты блока obj
        this.x = 0;
        this.y = 0;
        while(obj) {
            this.x += obj.offsetLeft;
            this.y += obj.offsetTop;
            obj = obj.offsetParent;
        }
        return {x:this.x,y:this.y};
    }
    function showCoor() {
        var div = document.getElementById("divId")
        var x = absPosition(div).x;
        var y = absPosition(div).y;
        alert("x = " + x + ", y = " + y);
    }
    </script>
</head>
<body onload="showCoor()">
<br><br>
<div id=divId style="border:1px solid #000000">123</div>

</body>

</html>

 

Автор: Хоббит 31.7.2006, 20:11
прочитайте вопрос ... мне нужно получить относительные значения позиции position: relative;    ....... теперь нужно получить top и left относительно родительского элемента?????

короче вот такая фигня news.yahoo.com  внизу .. там шняга в кот новости мотаются вправо в лево ... надо  так сделать 

Автор: Хоббит 1.8.2006, 11:37
решил проблему тем что сделал внешний див тоже relative

Тепрь надо сделать так что бы элемент ехал ......
Как организовать цикл или рекурсию .. или как еще.. чтобы функция back вызвалась 100 раз и остановилась ... при чем для плавности надо задать паузу ....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)