Pozycja elementu względem top'u strony

Wszystko związane ze skryptami JS, DHTML itd.
LaY
Posty: 1120
Rejestracja: 28 sty 2009, 15:20:07
Lokalizacja: Silesia
Płeć: Mężczyzna
User Agent: Opera Windows 1920x1080
Kontakt:

Pozycja elementu względem top'u strony

Post autor: LaY »

Witajcie, witajcie znawcy javascriptu. Potrzebna mi pomoc.

W tej kwestii cięgle jestem totalnym zerem i nie wiem kiedy nadrobię zaległości.

1. Mam za zadanie obliczyć odległość danego obiektu od górnej krawędzi strony a następnie przekazać otrzymane dane do skryptu php.
Znalazłem TUTAJ odpowiedni kod. co prawda pobiera on więcej danych niż potrzebuję jednak nie to jest problemem.

Na stronie mam coś takiego:

Kod: Zaznacz cały

      function findPos(obj) {
    var nleft = 0;
    var ntop = 0;
    if (obj.offsetParent) {
        nleft = obj.offsetLeft
        ntop = obj.offsetTop
        while (obj = obj.offsetParent) {
            nleft += obj.offsetLeft
            ntop += obj.offsetTop
        }
    }
    return [nleft,ntop];
    }
    
    var obiekt = getElementById("id_elementu");
    var wynik=findPos(obiekt);
    
    document.write(wynik["ntop"]); 
Jednak wynik się nie wyświetla, czy mógłby mi ktoś podpowiedzieć co może być nie tak?

2. Zmienną planuję przekazać do php poprzez jakiegoś diva z display:none;
Nie mam ochoty bawić się z ajaxem dla przekazania tak prostych danych. Chyba, że zna ktoś jakiś mniej prymitywny i niezbyt trudny sposób na przekazanie zmiennej z JS do PHP?
Niě nerwuj hanysa
LaY
Posty: 1120
Rejestracja: 28 sty 2009, 15:20:07
Lokalizacja: Silesia
Płeć: Mężczyzna
User Agent: Opera Windows 1920x1080
Kontakt:

Re: Pozycja elementu względem top'u strony

Post autor: LaY »

Ponawiam prośbę o pomoc, podnosząc przy tym temat.


Chodzi mi tylko o wskazanie przyczyny, czemu ten kod mi nie działa:

Kod: Zaznacz cały

      <script type="text/javascript" language="javascript">
      function findPos(obj) {
    var nleft = 0;
    var ntop = 0;
    if (obj.offsetParent) {
        nleft = obj.offsetLeft
        ntop = obj.offsetTop
        while (obj = obj.offsetParent) {
            nleft += obj.offsetLeft
            ntop += obj.offsetTop
        }
    }
    return [nleft,ntop];
    }
    
    var obiekt = getElementById("dol");
    var wynik=findPos(obiekt);

    document.write(wynik["ntop"]); 
      </script>
Gdy wycinam tą funkcję, samo document.write działa prawidłowo, jednak razem z nią nie uzyskuję żadnego wyniku nawet gdy każę mu wypisać dowolny tekst.
Niě nerwuj hanysa
LaY
Posty: 1120
Rejestracja: 28 sty 2009, 15:20:07
Lokalizacja: Silesia
Płeć: Mężczyzna
User Agent: Opera Windows 1920x1080
Kontakt:

Re: Pozycja elementu względem top'u strony

Post autor: LaY »

Sorry za spam ale poradziłem sobie sam i chciałbym wstawić rozwiązanie problemu dla potomnych.

Musiałem porównać odległość od górnej krawędzi dwóch elementów i w przypadku gdyby jeden z nich sięgał niżej od drugiego wstawić diva o wysokości równej różnicy tych dwóch liczb.

Pomogła mi w tym jQuery'owa funkcja offset()

Kod: Zaznacz cały

 <span></span>
 <script>
var el = $("span:last");
var offset1 = el.offset();
var wys1 = offset1.top;
</script>
Kod pobiera odległość elementu span od górnej krawędzi strony i zapisuje ją do zmiennej wys1


Analogiczny kod wstawiłem w drugim miejscu którego położenie chciałem porównać z pierwszym

Kod: Zaznacz cały

       <span></span>
 <script>
var el = $("span:last");
var offset2 = el.offset();
var wys2 = offset2.top;

var wys = wys1 - wys2;
if(menu > srodek)
document.write('<div style="height:' + wys + 'px"></div>');
</script>
Dochodzi do tego obliczenie róznicy dwóch elementów oraz kontrolne sprawdzenie czy nasz wstawiony div nie będzie przypadkiem miał ujemnej wysokości. Wygląda to inaczej niż planowałem ale działa a to jest najwazniejsze.
Niě nerwuj hanysa
ODPOWIEDZ