2010-12-17 56 views
2

首先,我不是Javascript专家。我想添加一个功能到我正在使用的SELECT框中,当添加一个新项目时自动滚动到最后,但只有当用户没有向上滚动时。选择滚动的Javascript控件

基本上,当用户正在查看较旧的条目时,我不希望新来者将该位置捕捉到选择列表的末尾。但是,如果用户使用滚动条向下滚动到底部,则会自动查看新到达的物品。

这里是我迄今为止

<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大师

西蒙

回答

1

一个选择框的滚动条不通过JavaScript访问。

相关:Height of an HTML select box (dropdown)

你可以看到选择哪些项目,并改变选择,但我不认为有任何方式告诉哪些项目是可见的。

+0

我只是喜欢由JS提供的'部分实现'! – sipi 2010-12-17 14:22:36

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(例如,它显示了一个列表,而不是一个下拉列表),那么当你“选择”新的(31st选项),列表不一定会滚动显示该条目

+0

应该提到,它是一个固定大小的选择框。 – sipi 2010-12-17 14:23:37

+0

啊,好的,就像''(关键在于它包含一个size属性) – scunliffe 2010-12-18 21:48:33