2009-05-01 4 views
6

divには多数の項目があります。私はこれらの項目をボタンをクリックして動的に選択します。私の場合はオーバーフローが自動的に発生します。私が欲しいのは、表示されていない項目が選択され、divをスクロールして表示できるようにすることです。これどうやってするの?DIVオートスクロール

答えて

9

あなたは、その内容がでスクロールさ量を設定するのHTMLElementのscrollTopプロパティを使用することができます。

そしてスクロールする要素のoffsetTopからスクロールする必要がある量を得ることができます。このHTMLと例えば

<div id="container"> 
    <p id="item-1">foo</p> 
    <p id="item-2">bar</p> 
    <p id="item-3">baz</p> 
</div> 

あなたは第三段落にコンテナのdivをスクロールするために、このJavaScriptを使用することもできます。

document.getElementById("container").scrollTop = document.getElementById("item-3").offsetTop; 
+0

js document.getElementById( "container")にタイプミスがあります。scrollTop –

+0

ありがとうございました。一定。 –

3

ボタンがクリックされ、選択されたアイテムがこの選択されたアイテムのfocus()メソッドを呼び出したとき。これはあなたの要素に自動スクロールが発生します。

<div style="height:80px; overflow:auto;"> 
    <input type="text" id="id1"><br><br> 
    <input type="text" id="id2"><br><br> 
    <input type="text" id="id3"><br><br> 
    <input type="text" id="id4"><br><br> 
    <input type="text" id="id5"><br><br> 
    <input type="text" id="id6"><br><br> 
</div> 
<input type="button" onclick="document.getElementById('id6').focus();"> 
+1

これは、通常の「DIV」要素に対して動作するようには思えません(少なくとも、Safari 4やFirefox 3にはない)。 –

+0

私はSafariを試していませんが、Firefox 3は完璧に動作します。 – Canavar

+0

あなたが書いたコードは完全に動作します。しかし、 "input"要素を "div"要素に置き換えた場合、div要素のフォーカスはスクロールしていないようです。例については、http://cloud.quintusquill.com/dropbox/ScrollTest.htmlを参照してください。 –

5

さらに別のオプションは、プラグインScrollToとともにjQueryを使用することです。

2

DIVのscrollTopまたはscrollLeftプロパティを使用することもできます(スクロールが水平か垂直かによって異なります)。

私は以前これを行っていて、setTimeoutイベントを使用して1モーションではなく流動的にスクロールさせました。これはJQueryのないthoです。

2

さらに別のオプション...アンカー。

各項目に一意のIDを割り当て、あなたが特定の項目にスクロールしたいとき、次のJavaScriptコードを実行:itemIDは要素のIDを含む変数です...

location.hash = itemID; 

をあなたはスクロールしたい。

スティーブ

関連する問題