Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Jak sprawdzić dlugosc dokumentu (scrolla)
Forum PHP.pl > Forum > Przedszkole
kaźmirz
Chce, aby po zjechaniu scrollem na sam dol textarea, aktywowal sie button AKCEPTUJ.
Mam taki kod:
[JAVASCRIPT] pobierz, plaintext
  1. function scrolling(){
  2. var scroll1 = document.getElementById('scroll1');
  3. var akceptuj = document.getElementById('akceptuj');
  4. if(scroll1.scrollTop >= TUTAJ NIE WIEM SKAD POBRAC MAX POZYCJE SCROLLA)
  5. {
  6. akceptuj.disabled = "";
  7. }
  8. else
  9. {
  10. akceptuj.disabled = "disabled";
  11. }
  12. }
[JAVASCRIPT] pobierz, plaintext

i html:
  1. <textarea onscroll="scrolling();" id="scroll1" cols="50" rows="10" readonly="readonly">
  2. <?php include('text.txt'); ?>
  3. </textarea><br />
  4. <button id="akceptuj" disabled="disabled">Akceptuje</button>

No i nie wiem jak w tym warunku if pobrac max pozycje scrollTop, probowalem z scrollHeight, ale ta funkcja zwraca wieksza liczbe od scrollTOP (gdy ten jest na samym dole).
Kod ogolnie dziala, ale tylko gdy recznie sprawdze jaka liczbe zwraca scrollTop, gdy jest na samym dole i ja wpisze w if - tylko, ze to rozwiazanie jest zle, dlatego ze dokument moze miec zmienna tresc, a co za tym idzie, zmienna liczbe max scrollTop, poza tym w roznych przegladarkach te liczby sa takze rozne.
kamil4u
https://developer.mozilla.org/pl/DOM/element.scrollHeight :
Cytat
property that gets the height of the scroll view of an element; it includes the element padding but not its margin.


Dodaj margines do wartości z scrollHeight smile.gif
kaźmirz
Cytat(kamil4u @ 9.10.2010, 17:14:16 ) *
https://developer.mozilla.org/pl/DOM/element.scrollHeight :


Dodaj margines do wartości z scrollHeight smile.gif

No ale jaki margines? I raczej dodac musze do wartosci scrollTop - poniewaz to scrollTop jest zawsze mniejsze od scrollHeight :/
Poza tym chrome ma mozliwosc zmiany rozmiarow pola textarea i to wplywa na wartosc scrollTop - nie bedzie z tym problemow?
Skie
Raczej nie powinno być problemów - ale sprawdź - a jak będą to zablokuj Chrome'owi i Safari możliwość rozszerzania pola tekstowego za pomocą CSS:

Kod
resize: none;
kamil4u
Wtedy napisałem bez dokładnego przeanalizowania kodu, ale się zrehabilituje:
Kod
<textarea onscroll="scrolling();" id="scroll1" cols="50" rows="10" readonly="readonly">

























</textarea><br>
<button id="akceptuj" disabled="disabled">Akceptuje</button>

<script>
function scrolling(){
    var scroll1 = document.getElementById('scroll1');
    var akceptuj = document.getElementById('akceptuj');
        akceptuj.innerHTML = (scroll1.scrollTop +' '+
(scroll1.scrollHeight-parseInt(scroll1.clientHeight )));
    if(scroll1.scrollTop >= scroll1.scrollHeight-parseInt(scroll1.clientHeight ))
        {
        akceptuj.disabled = "";
    }
        else
       {
        akceptuj.disabled = "disabled";
    }
}
</script>
kaźmirz
Dzieki wielkie za pomoc, kluczowa linijka okazalo sie:
Kod
scroll1.scrollHeight - parseInt(scroll1.clientHeight)

Dzieki temu moj kod wyglada teraz tak (i najwazniejsze - dziala)
[JAVASCRIPT] pobierz, plaintext
  1. function scrolling(){
  2. var scroll1 = document.getElementById('scroll1');
  3. var akceptuj = document.getElementById('akceptuj');
  4. if(scroll1.scrollTop >= scroll1.scrollHeight - parseInt(scroll1.clientHeight))
  5. {
  6. akceptuj.disabled = "";
  7. }
  8. else
  9. {
  10. akceptuj.disabled = "disabled";
  11. }
  12. }
[JAVASCRIPT] pobierz, plaintext

i HTML
  1. <textarea onscroll="scrolling();" id="scroll1" cols="50" rows="10" readonly="readonly">
  2. <?php include('text.txt'); ?>
  3. </textarea><br />
  4. <button id="akceptuj" disabled="disabled">Akceptuje</button>


Pozdrawiam
kamil4u
Pomyliłem się troszeczkę - swoją drogą też powinieneś to spr. -> usuń to parseInt - jak można zobaczyć w dokumentacji funkcja ta zwraca liczbę całkowitą
@down: bo wykonywana jest zbędna operacja -> poprawny/ładny kod to podstawa
kaźmirz
Wywalilem, ale przeciez i tak liczby w tych zmiennych sa liczbami calkowitymi smile.gif
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.