2014-10-24 13 views
7

Mam textarea, do której dołączam dane za pomocą textarea.value += "more text\n"; i chciałbym, aby "pozostała" przewinięta do dołu, tak aby zawsze wyświetlała ostatnią linię.Textarea automatycznie przewiń do dołu

Czytałem, że należy zrobić:

var textarea = document.getElementById('textarea_id'); 
textarea.scrollTop = textarea.scrollHeight; 

Ale starałem że (http://jsfiddle.net/BenjiWiebe/mya0u1zo/) i nie mogę zmusić go do pracy.

Co robię źle?

+0

Możliwy duplikat [Jak mieć textarea zachować przewijane do dołu po aktualizacji] (https: // stackoverflow .pl/questions/7373081/how-to-have-a-textarea-to-keep-scrolled-to-the-bottom-when-updated) – LoganMzz

Odpowiedz

14

Musisz ustawić scrollTop każdym razem dołączyć tekst:

var textarea = document.getElementById('textarea_id'); 
setInterval(function(){ 
    textarea.value += Math.random()+'\n'; 
    textarea.scrollTop = textarea.scrollHeight; 
}, 1000); 

http://jsfiddle.net/mya0u1zo/2/

+0

OK, więc nie ma sposobu, aby to "przykleiło się" do dna ? Ponieważ mam wiele miejsc w moim kodzie, które dołączają tekst ... chociaż myślę, że mógłbym stworzyć funkcję 'append_text' ... – BenjiWiebe

+1

Musisz zaktualizować' scrollTop', jeśli zmieni się 'scrollHeight'. – celeritas

Powiązane problemy