基本上,您会获得对要滚动到的单元格( <td>
) 或行( ) 的引用。<tr>
然后,您只需调用该元素的 scrollIntoView 方法。
IE
var tgtElement = document.getElementById('idOfDesiredRowOrCell');
tgtElement.scrollIntoView();
这是一个简单的示例,请注意,我只是按数字定位所需的行 - 您很可能希望以不同的方式选择目标元素。另外,请注意创建了 20 行,因此有效输入的范围是 [0..19] - 选择 19 将滚动直到第 19 行可见 - 尽管它位于 div 的底部,而不是顶部。<br>
我想如果你真的必须滚动选定的行到 div 的顶部,你可以在表格之后添加一些元素。
HTML:
<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}
function newEl(tag){return document.createElement(tag);}
function newTxt(txt){return document.createTextNode(txt);}
window.addEventListener('load', mInit, false);
function mInit()
{
var tbl = makeTable(20, 5);
byId('scrollMe').appendChild(tbl);
byId('doScrollBtn').addEventListener('click', onScrollBtnClick, false);
}
function onScrollBtnClick()
{
var tbl = byId('demoTable');
var rowNum = byId('scrollRowInput').value;
var selectedRow = tbl.rows[rowNum];
selectedRow.scrollIntoView();
}
function makeTable(numRows, numCols)
{
var x, y, tbl, row, cell;
tbl = newEl('table');
tbl.id = 'demoTable';
for (y=0; y<numRows; y++)
{
row = newEl('tr');
for (x=0; x<numCols; x++)
{
cell = newEl('td');
cell.appendChild( newTxt("Cell: " + x + ", " + y) );
row.appendChild(cell);
}
tbl.appendChild(row);
}
return tbl;
}
</script>
<style>
#scrollMe
{
height: 150px;
border: solid 1px red;
overflow-y: scroll;
}
</style>
</head>
<body>
<div id='scrollMe'></div>
<input id='scrollRowInput'/><button id='doScrollBtn'><-- Scroll to this row</button>
</body>
</html>