Reputation: 2235
I have a textarea that I append data to with textarea.value += "more text\n";
and I would like it to "stay" scrolled to the bottom, so it would always show the last line.
I have read that I should do:
var textarea = document.getElementById('textarea_id');
textarea.scrollTop = textarea.scrollHeight;
But I tried that (http://jsfiddle.net/BenjiWiebe/mya0u1zo/) and I can't get it to work.
What am I doing wrong?
Upvotes: 11
Views: 30732
Reputation: 1671
To answer the original question: since your string output ends with a newline, you should scroll before you output, not after (I keep my ids in an object called id):
function Output(Msg)
{
...
id.Log.scrollTop=id.Log.scrollHeight;
SetValue('Log',out);
}
Upvotes: 1
Reputation: 2281
You need to set scrollTop
each time you append text:
var textarea = document.getElementById('textarea_id');
setInterval(function(){
textarea.value += Math.random()+'\n';
textarea.scrollTop = textarea.scrollHeight;
}, 1000);
http://jsfiddle.net/mya0u1zo/2/
Upvotes: 30