Autor | Zpráva | ||
---|---|---|---|
Knd Profil * |
#1 · Zasláno: 20. 8. 2009, 14:55:12
Zdravim,
pokousel jsem se ukuchtit div, ktery by neustale scroloval nahoru a dolu po nacteni stranky. Prisel jsem s timhle: <html> <head> <script type="text/javascript"> var scrolling = null; function scroll_up() { var d = document.getElementById('div_scroll'); d.scrollTop = d.scrollTop - 1; scrolling = window.setTimeout(function() { scroll_up(); }, 5); if (d.scrollTop == 1){scroll_down();} } function scroll_down() { var d = document.getElementById('div_scroll'); d.scrollTop = d.scrollTop + 1; scrolling = window.setTimeout(function() { scroll_down(); }, 5); if (d.scrollTop == (d.scrollHeight - d.offsetHeight)){scroll_up();} } </script> </head> <body onload="scroll_down()"> <div id='div_scroll' style="width: 50px; height: 100px; overflow: hidden;"> bububu<br> bububu<br> bububu<br> bububu<br> bububu<br> bububu<br> bububu<br> bububu<br> </div> </body> </html> Problem je v tom, ze po chvili to nescrolluje plynule, jakoby tam haproval pixel a ja nevim kde (js zrovna neovladam)... zadam proto o pomoc =) |
||
Suta Profil |
#2 · Zasláno: 20. 8. 2009, 15:14:58 · Upravil/a: Suta
Knd
Řešení je spousta. V první řadě nikde nezastavuješ jednou spuštěnou funkci scroll_up() či scroll_down(), takže jakmile na konci počátečně spuštěné funkce scroll_down() spustíš funkci scroll_up(), funkce scroll_down() stále pokračuje... takže funkce se nabalují a po půl minutě ti jich může jet třeba 30 najednou, proto ta "neplynulost"... Musíš je nějak zastavit, např. přidáním těchto zvýrazněných řádků: <script type="text/javascript"> var scrolling = null; var scrollingUp = false, scrollingDown = false; function scroll_up() { if(scrollingDown) return; var d = document.getElementById('div_scroll'); d.scrollTop = d.scrollTop - 1; scrolling = window.setTimeout(function() { scroll_up(); }, 5); if (d.scrollTop == 1){scrollingUp = false; scrollingDown = true; scroll_down(); } } function scroll_down() { if(scrollingUp) return; var d = document.getElementById('div_scroll'); d.scrollTop = d.scrollTop + 1; scrolling = window.setTimeout(function() { scroll_down(); }, 5); if (d.scrollTop == (d.scrollHeight - d.offsetHeight)){ scrollingDown = false; scrollingUp = true; scroll_up();} } </script> Samozřejmě by to šlo i pomocí jedné jediné proměnné, nicméně snad jsem tě navedl na řešení. |
||
Knd Profil * |
#3 · Zasláno: 20. 8. 2009, 15:20:21
Aha, to mi nedoslo... Jak jsem psal, js neovladam :)
Dekuji za radu |
||
Časová prodleva: 15 let
|
0