代码之家  ›  专栏  ›  技术社区  ›  Tony Peterson

使用javascript ScrollLeft强制滚动定位

  •  1
  • Tony Peterson  · 技术社区  · 16 年前

    我有一组javascript函数,我使用一个输入元素表来启用导航。像跟踪当前焦点元素,以及从一行结束到下一行开始溢出。通过创建一个与固定列一样只有一个列宽的表,并为另一个表创建一个滚动条,我可以使用固定第一列来支持滚动条。

    但是,我最近注意到,滚动条的默认行为有点不足。当我导航到最后一列时,火狐会将该列部分隐藏在滚动条中,而不是滚动到足以看到它的位置。同样,当我滚动到下一行,导航代码将焦点设置到第一列(冻结表)中的一个单元格时,firefox不会更改滚动条,所以我可以看到第一列的所有内容。

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

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

    不幸的是,这似乎只是偶尔才起作用。当我启用Firebug并通过我的导航代码跟踪此行所在的位置时,它似乎会偶尔工作一次,但大多数情况下,此行将运行,但Tables Scroll Left属性保持不变,我也看不到视觉上的变化。

    我还将ScrollLeft设置为一个较大的数字,以便将其设置为文档中所述的最大值,而且这也不起作用(偶尔除外)。

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

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

    根据Mozilla的文档,这似乎是源于IE的东西,但现在可以在Firefox中使用。这在firefox中真的不起作用吗,因为这个项目只适用于firefox。

    所以我想弄清楚是怎么回事。是否知道ScrollLeft不能正常工作,或者我应该回去看看我是否在我对滚动条的定义中搞砸了什么,或者沿着这些线做了什么?

    1 回复  |  直到 8 年前
        1
  •  7
  •   ithcy    16 年前

    包含DIV是带有溢出的元素。您需要设置DIV的ScrollLeft,而不是表。