Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将textarea滚动条设置为默认底部?_Javascript_Css_Scroll_Textarea - Fatal编程技术网

Javascript 如何将textarea滚动条设置为默认底部?

Javascript 如何将textarea滚动条设置为默认底部?,javascript,css,scroll,textarea,Javascript,Css,Scroll,Textarea,我有一个文本区域,当用户输入被发送进来时,它被动态地重新加载。它每隔几秒钟就会刷新一次。当此文本区域中的文本量超过文本区域的大小时,将显示一个滚动条。但是,滚动条实际上不可用,因为如果您开始向下滚动,几秒钟后文本区域会刷新,并将滚动条重新带到顶部。我想将滚动条设置为默认显示最底部的文本。有人知道如何做到这一点吗?非常简单,用香草javascript: var textarea = document.getElementById('textarea_id'); textarea.scrollTop

我有一个文本区域,当用户输入被发送进来时,它被动态地重新加载。它每隔几秒钟就会刷新一次。当此文本区域中的文本量超过文本区域的大小时,将显示一个滚动条。但是,滚动条实际上不可用,因为如果您开始向下滚动,几秒钟后文本区域会刷新,并将滚动条重新带到顶部。我想将滚动条设置为默认显示最底部的文本。有人知道如何做到这一点吗?

非常简单,用香草javascript:

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

您可以将其用于jQuery

$(document).ready(function(){
    var $textarea = $('#textarea_id');
    $textarea.scrollTop($textarea[0].scrollHeight);
});

我也遇到了同样的问题,并且发现没有一个属性可以在初始设置时获得正确的滚动行为。 但是,一旦文本在textArea中更新,在同一函数中,您可以立即将focus()设置为textArea,使其滚动到底部。然后,您还可以对其他一些输入字段调用
focus()
,以允许用户在该字段中输入。这就像魅力:

function myFunc() {
    var txtArea = document.getElementById("myTextarea");
    txtArea.value += "whatever"; // doesn't matter how it is updated
    txtArea.focus();
    var someOtherElem = document.getElementById("smallInputBox");
    someOtherElem.focus();
}
在你的HTML中

<textarea id="logTextArea" style="width:600px;height:200px;"></textarea>

在您的Javascript中

<script language="javascript">

    function loadLog(logValue) {
        logTa = document.getElementById("logTextArea")
        logTa.value = logValue;
        scrollLogToBottom()
    }

    function scrollLogToBottom() {
        logTa = document.getElementById("logTextArea")
        logTa.scrollTop = logTa.scrollHeight;
    }

    loadLog("This is my really long text block from a file ... ")

</script>

函数loadLog(logValue){
logTa=document.getElementById(“logTextArea”)
logTa.value=logValue;
scrollLogToBottom()
}
函数scrollLogToBottom(){
logTa=document.getElementById(“logTextArea”)
logTa.scrollTop=logTa.scrollHeight;
}
loadLog(“这是一个文件中非常长的文本块…”)

我发现在将新值加载到文本区域后,需要将设置scrollHeight的代码放入单独的函数中。

对jQuery不是很熟悉。我会把它和javascript放在同一个区域吗?还是我需要创建一个新元素并指定一个新类型?并添加站点范围的依赖项,只是为了在纯JS中做一些事情听起来不是个好主意。仅仅因为您可以,并不意味着您应该。如果您只是在同一代码块中加载textarea,则可能会重复,这不起作用。要使其正常工作,请将此代码放在单独的函数中,然后在加载新的textarea值后调用它。然后,它将根据需要工作。