Div内にテーブルがあります(オーバーフローしているため、ブラウザはスクロールバーをレンダリングします)。 JavaScriptを使用して、スクロールバーハンドルをトラックに沿ってテーブル内の行の位置に対応する位置に移動するにはどうすればよいですか?
+--------------------------------------+
|100 | |
|101 | |
|102 | |
|103 | |
|104 | |
|105 This is a table that |---|
|106 has overflowed. | - | <-- I want to move this using JavaScript,
|107 |---| so that a specific row # is visible.
|108 | |
|109 | |
|110 | |
|111 | |
+--------------------------------------+
Non - jQuery way にしたい場合は、それを含むテーブルの scrollTop
property を使用します。
含む<div />
とともに、IDを使用してスクロールする行を簡単に識別できると仮定します。スクロールする要素の offsetTop
を使用します。
var container = document.getElementById('myContainingDiv');
var rowToScrollTo = document.getElementById('myRow');
container.scrollTop = rowToScrollTo.offsetTop;
Jqueryを使用:
「.scroll-table」は、スクロール可能な部分に使用されるクラス名です
1.最初に初期位置に行く
$('.scroll-table').scrollTop(0);
2.以下の行は、テーブルのトップ位置とスクロールする行のスクロールの差を計算します
$('.scroll-table').scrollTop($('#myrowid').position().top-$('.scroll-table').position().top);
これを使用できます:
$('a').on('click', function(e){
var t = this.id.substring(1);
e.preventDefault();
var target= $(".section")[t] ;
var offset = $( target ).offset();
$('html, body').stop().animate({
scrollTop: offset.top
}, 1000);
});
また、これを確認できます jsfiddleの例 .
ここでjQueryに興味がある場合は、次のように実行できます。
$(".tableClass tbody").scrollTop(0);
.scrollTop()
jQueryメソッドも使用できます。
AngularJsを使用したソリューションがあります。
$document.scrollTopAnimated(50, 1000).then(function () {});
最初のパラメーターは位置です。 2番目は、アニメーションの継続時間です。