使用Javascript scrollLeft强制滚动定位

时间:2009-04-06 18:18:17

标签: javascript firefox scrollbar

我有一组Javascript函数,我使用输入元素表来启用导航。比如跟踪当前关注的元素,从一行的末尾溢出到下一行的开头。我有一个固定的第一列的滚动条支持,通过创建一个只有一列作为我的固定列并具有另一个表的滚动条的表。

但是,我最近注意到,滚动条的默认行为有点不足。当我导航到最后一列时,Firefox会使该列部分被滚动条遮挡,而不是滚动到足以看到它。同样,一旦我滚动,所以我可以看到最后一列的另一部分,当我移动到下一行并且导航代码将焦点设置为第一列(冻结表)中的单元格时,Firefox不会更改滚动条让我可以看到所有第一列。

因此,我一直在研究如何使用javascript修改滚动条定位。我的表不使用垂直滚动条,只使用水平滚动条。所以我偶然发现了scrollLeft。

document.getElementById("meastable").scrollLeft = 1; // reset scroll to leftmost

不幸的是,这似乎只能偶尔使用一次。当我启用Firebug并通过导航代码跟踪此行时,它似乎偶尔会工作一次,但大多数情况下,此行将运行但是表格向左滚动属性未更改且我看不到更改视觉上。

我还将scrollLeft设置为一个较大的数字,因此它将设置为文档中描述的最大值,并且也不起作用(偶尔除外)。

我使用以下代码使用我的表设置滚动条。

<div style="overflow:auto">
<table id="meastable" border="1">

根据Mozilla的文档,这似乎起源于IE,但现在可以在Firefox中使用。这实际上是不适用于Firefox,因为这个内部项目只适用于Firefox。

所以我想弄清楚什么是错的。是否知道scrollLeft不能正常工作,或者我应该回去看看我是否在滚动条的定义或其他内容中搞砸了什么?

1 个答案:

答案 0 :(得分:7)

包含div是溢出的元素。您需要设置div的scrollLeft,而不是表格。