我的问题有点难以描述,所以我会尽力解释清楚。
我有一个文本区域,其CSS为#object{overflow:hidden;resize:none;}
。我想防止它生成滚动条,同时又可以自动调整大小。这个文本区域与外部脚本的控制台同步,也就是说它会更新。然而,默认情况下,它会停留在顶部,除非你选中文本,将其拖到元素底部,这会是滚动的唯一方式,除了用箭头键以外。
从程序上讲,有没有办法让文本区域在更新时保持在底部?这样就可以自动滚动以适应其使用情况了。
我的问题有点难以描述,所以我会尽力解释清楚。
我有一个文本区域,其CSS为#object{overflow:hidden;resize:none;}
。我想防止它生成滚动条,同时又可以自动调整大小。这个文本区域与外部脚本的控制台同步,也就是说它会更新。然而,默认情况下,它会停留在顶部,除非你选中文本,将其拖到元素底部,这会是滚动的唯一方式,除了用箭头键以外。
从程序上讲,有没有办法让文本区域在更新时保持在底部?这样就可以自动滚动以适应其使用情况了。
document.getElementById("textarea").scrollTop = document.getElementById("textarea").scrollHeight
通过使用jQuery,你可以使用以下代码来检测textarea
的内容变化:
$("#object").change(function() {
scrollToBottom();
});
使用以下代码可以滚动到底部:
function scrollToBottom() {
$('#object').scrollTop($('#object')[0].scrollHeight);
}
使用JavaScript
var textarea = document.getElementById('textarea_id');
textarea.scrollTop = textarea.scrollHeight;
使用Jquery
$('#textarea_id').scrollTop($('#textarea_id')[0].scrollHeight);
通用JQuery插件
这是一个通用的JQuery插件,用于滚动至任何元素的底部:
$.fn.scrollBottom = function() {
return $(this).scrollTop($(this)[0].scrollHeight);
};
用法:
$("#logfile").val( $("#logfile").val() + "this is new line test\n" ).scrollBottom();
function checkTextareaHeight(){
var textarea = document.getElementById("yourTextArea");
if(textarea.selectionStart == textarea.selectionEnd) {
textarea.scrollTop = textarea.scrollHeight;
}
}