JavaScript控制SELECT滚动

3
首先,我不是Javascript专家。我想要为我正在使用的SELECT框添加一个功能,当新项添加时自动滚动到末尾,但仅在用户未向上滚动时才执行此操作。
基本上,当用户查看旧条目时,我不希望新条目将位置快速移动到选择列表的末尾。然而,如果用户使用滚动条向下滚动到底部,新条目应自动显示出来。
以下是我目前所拥有的内容:
<script type="text/javascript">
  function AddItem(s) 
  {
    document.getElementById('content').add(new Option(s));
    // Scroll to end - cant remember why I am using this pair of commands :)
    document.getElementById('content').selectedIndex = document.getElementById('content').length - 1;
    document.getElementById('content').selectedIndex = document.getElementById('content').length + 1;
  }
</script>

我希望能够进行一项测试,以查看倒数第二个项目是否可见。如果是这样,我们就到了底部,应该执行自动滚动。这样做正确吗?

谢谢JS大师们。

西蒙

2个回答

2

我就是喜欢 JS 提供的“部分实现”! - sipickles

0
正如@bemace所指出的那样,JavaScript无法访问滚动选择框。你能做的最好的事情就是“预先选择”该项……如果这是一个“下拉式”选择,则应该显示该选项。
例如:
<script type="text/javascript">
  function AddItem(s){
    var mySelect = document.getElementById('content');
    mySelect.add(new Option(s));
    mySelect.selectedIndex = mySelect.options.length - 1;
  }
</script>

需要注意的是,如果您在选择中有30个选项,并且将size属性设置为例如10(例如,它显示为列表而不是下拉菜单),那么当您“选择”新的(第31个)选项时,列表不一定会滚动以显示该条目。

应该提到,它是一个固定大小的选择框。 - sipickles
啊,好的,就像 <select size="8"...>...</select> 这样的(关键是它包含了一个 size 属性)。 - scunliffe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接