首先,我不是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 Masters
西蒙
答案 0 :(得分:1)
无法通过javascript访问选择框的滚动条,因此我认为您无法执行此操作。
相关:Height of an HTML select box (dropdown)
您可以看到选择了哪些项目并更改了选择,但我认为没有办法确定哪些项目可见。
答案 1 :(得分:0)
正如@bemace所说,JavaScript不提供滚动选择框的访问权限。您可以做的最好的事情是“预先选择”项目...如果这是“下拉”样式选择,则应该显示该选项。
e.g。
<script type="text/javascript">
function AddItem(s){
var mySelect = document.getElementById('content');
mySelect.add(new Option(s));
mySelect.selectedIndex = mySelect.options.length - 1;
}
</script>
但是应该注意,如果你在select中有30个选项,并且size
属性设置为说10
(例如它显示为列表,而不是下拉列表),那么当您“选择”新的(31st
选项),列表不一定会滚动显示该条目