文本区域自动滚动到底部

Posted

技术标签:

【中文标题】文本区域自动滚动到底部【英文标题】:Textarea auto-scroll to the bottom 【发布时间】:2014-12-20 20:42:12 【问题描述】:

我有一个文本区域,我用textarea.value += "more text\n"; 将数据附加到它,我希望它“保持”滚动到底部,所以它总是显示最后一行。

我已经读到我应该这样做:

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

但我试过了 (http://jsfiddle.net/BenjiWiebe/mya0u1zo/),但我无法让它工作。

我做错了什么?

【问题讨论】:

How to have a textarea to keep scrolled to the bottom when updated的可能重复 How do I set textarea scroll bar to bottom as a default?的可能重复 【参考方案1】:

每次追加文字时都需要设置scrollTop

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

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

【讨论】:

好的,那么有没有办法让它“粘”在底部?因为我的代码中有多个附加文本的地方......虽然我想我可以创建一个函数append_text......【参考方案2】:

回答最初的问题:由于您的字符串输出以换行符结尾,因此您应该在输出之前滚动,而不是之后(我将我的 id 保存在一个名为 id 的对象中):

function Output(Msg)
  
  ...
  id.Log.scrollTop=id.Log.scrollHeight;
  SetValue('Log',out);
  

【讨论】:

以上是关于文本区域自动滚动到底部的主要内容,如果未能解决你的问题,请参考以下文章

更新时如何让文本区域保持滚动到底部

ExtJS,无法将我的文本区域滚动到底部

自动滚动到文本区域的底部

文本区域 (JTextArea) 的自动文本滚动,插入符号位置设置为最后一行的开头

JavaFX - 自动清除文本区域(滚动策略?)

IE 11 的自动调整文本区域大小