2012-03-08 2 views
4

textareaのscrollTop値を設定しようとすると問題が発生します。次のように私のJavaScriptコードがある -テキストエリアのscrollTop値を設定するにはどうすればよいですか?

var element = document.getElementById("messageTextArea"); 
console.log("scrollTop = "+element.scrollTop); 
console.log("scrollHeight = "+element.scrollHeight); 
element.scrollTop = element.scrollHeight; // doesn't work! 

console.log("The value is-->"+element.scrollTop); // no change! 

element = document.getElementById("messageTextArea"); 
console.log("Now scrollTop = "+element.scrollTop);   // no change! 
console.log("Now scrollHeight = "+element.scrollHeight); 

Firefoxのコンソールログには、次のようになります -

scrollTop = 0 
scrollHeight = 86 
The value is-->0 
Now scrollTop = 0 
Now scrollHeight = 86 

私が本当にやりたいときにtextareaは何とか自動的に最大に下にスクロールするようにすることですテキストが実際の幅と高さに収まらず、スクロールバーがアクティブになります。

これは私が現在持っているものです - - ここで

のは、問題を説明する2つのスクリーンショットです

enter image description here

そして、これは私が持っているしたいものです -

enter image description here

助けてください!

+0

あなたは[ '.scrollIntoView'](https://developer.mozilla.org/を試してみましたja/DOM/element.scrollIntoView)? –

+0

@GGG element.scrollIntoView(false)を試しましたが、それでも動作しませんでした。 : – CodeBlue

+0

チャットログの最後に追加する要素で呼び出すと動作するはずです –

答えて

1

よろしくお願いします。問題は、私が間違ったテキストエリアを取得していたことでした。これはとても恥ずかしいです!今それは動作します。

var element = document.getElementById("chatTextArea"); // <-- this is where I was making a mistake in my code. So embarrassing! 
0

はまた、テキストエリアの値がAJAXで設定されている場合は特に、textareaFirefoxのscrollTopを使用して問題がありました。

これが私の仕事:

<script> 
function scroll_bottom(elm){ 
    var elm = document.getElementById(elm); 
    var bottom = function() { 
     elm.scrollTop = elm.scrollHeight; 
    }; 
    setTimeout(bottom, 0); 
} 
</script> 

を次に例えば、それを使用する:

<textarea id="log" style="width:100%;height:100%;resize:none;"></textarea> 

<script> 
$(document).ready(function(){ 
    scroll_bottom('log'); 
}); 
</script> 
関連する問題