Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Jak sprawdzić dlugosc dokumentu (scrolla)
kaźmirz
post 9.10.2010, 14:45:12
Post #1





Grupa: Zarejestrowani
Postów: 103
Pomógł: 2
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


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.

Ten post edytował kaźmirz 9.10.2010, 19:58:35
Go to the top of the page
+Quote Post
kamil4u
post 9.10.2010, 16:14:16
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
kaźmirz
post 9.10.2010, 18:44:46
Post #3





Grupa: Zarejestrowani
Postów: 103
Pomógł: 2
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Skie
post 9.10.2010, 18:58:26
Post #4





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


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;


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
kamil4u
post 9.10.2010, 19:22:52
Post #5





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


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>


--------------------
Go to the top of the page
+Quote Post
kaźmirz
post 9.10.2010, 20:11:05
Post #6





Grupa: Zarejestrowani
Postów: 103
Pomógł: 2
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


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


Ten post edytował kaźmirz 9.10.2010, 20:14:01
Go to the top of the page
+Quote Post
kamil4u
post 9.10.2010, 20:18:52
Post #7





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


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

Ten post edytował kamil4u 9.10.2010, 21:40:25


--------------------
Go to the top of the page
+Quote Post
kaźmirz
post 9.10.2010, 20:30:52
Post #8





Grupa: Zarejestrowani
Postów: 103
Pomógł: 2
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


Wywalilem, ale przeciez i tak liczby w tych zmiennych sa liczbami calkowitymi smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 00:56