Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skrypt dziala tylko raz
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
matewka
Witam.
Mam taką funkcję, którą uruchamiam kliknięciem w jeden z dwóch przycisków. Funkcja służy do przesuwania DIVa w górę lub w dół. Niestety funkcja działa tylko raz. Nie ważne czy nacisnę przycisk pierwszy czy drugi, po jednym kliknięciu funkcja się ładnie wykonuje a potem, jakby przyciski "tracą swoją moc".
  1. function updown (kierunek) {
  2. skrol = document.getElementById('menu_inner').style;
  3. if (kierunek == "up") {
  4. skrol.top += 120;
  5. }
  6. else {
  7. skrol.top -= 120;
  8. }
  9. }


Widzę, że nikt nie potrafi nic zaradzić, więc może podam adres faktycznej strony: http://mateuszgawlinski.pl/css3/galeria.php?galeria=rodzina
Może teraz kogoś oświeciło?
Scalak
sprawdź co wywali alert(document.getElementById('menu_inner').style.top) a potem użyj parseInt

Pozdro
Maciek

PS: doprowadzi do
document.getElementById('menu_inner').style.top=parseInt(document.getElementById('menu_inner').style.top)-120+'px'
matewka
Twoja propozycja nie działa.
A alert wyświetlał NaN albo cały czas 120px (przy drobnych modyfikacjach kodu). Na razie odszedłem od tego pomysłu i właśnie czytam jak stosować object.offsetTop. Bo tam jest też coś z object.offsetParent...
Jak doczytam i wstawię to dam znać czy zadziałało.

--------------------------------------------------------------

Zgasiłem na chwilę dwie linijki kodu i wyświetliłem alert.
  1. function updown (kierunek) {
  2. skrol = document.getElementById('menuInner');
  3. if (kierunek == "up") {
  4. //skrol.offsetTop += 120;
  5. alert (skrol.style.top);
  6. }
  7. else {
  8. //skrol.offsetTop -= 120;
  9. alert (skrol.style.top);
  10. }
  11. }

To zadziwiające, ale alert nie wyświetla NIC! Natomiast jak napiszę tak:
  1. alert (parseInt(skrol.style.top));

to alert wyświetla NaN
Scalak
podmień updown('down') w onclicku na to co podałem:
document.getElementById('menu_inner').style.top=parseInt(document.getElementById('menu_inner').style.top)-120+'px'

i dopisz do <div id='menu_iner' style='top:0px;'>
metoda.style.top dojdzie tylko do stylu wpisanego bezpośrednio w znacznik

M

PS: piłem do tego że alert(document.getElementById('menu_inner').style.top) zwraca wartośc stylu WPISANEGO w znacznik i dodatkowo z końcówka px (jako string).
matewka
Jesteś bogiem! smile.gif
Tylko mam jeszcze jedno pytanko: Czemu kod dla onclicka muszę umieszczać bezpośrednio w onclicku?
Pytam, ponieważ chciałem jeszcze nieco skomplikować moją funkcję (uwarunkować jej wykonanie tym, że przewijana lista się skończyła i nie ma już co przewijać). Przez ten fakt ta jedna linijka kodu może stać się bardzo długa, co uważam za bardzo niechlujne.
Scalak
ależ oczywiście można umieścić kod w funkcji i wywoływać ją w zdarzeniu. Przykładowo:

<script type="text/javascript">
function test(){
TU KOD
}
</script>

<div onclick="test()">KLIK MI</div>
matewka
Wszystko jasne. Jeszcze raz dziękuję.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.