Javascript:以编程方式将非弹出 SELECT 元素滚动到 Chrome 中的底部

2023-12-05

我有一个SELECT网页中的元素,我希望它加载滚动到底部。在大多数浏览器中,我可以这样做:

myselect.scrollTop = myselect.scrollHeight;

虽然scrollHeight超出范围,浏览器会发现并适当限制它。谷歌浏览器除外。我可以提交错误报告,但这并不能帮助我解决眼前的问题。所以我尝试了这个:

myselect.scrollTop = myselect.scrollHeight - myselect.clientHeight;

但这减少了太多——元素底部下方有一些项目。我也尝试过减去offsetHeight,但情况稍差一些。

有谁知道一种与浏览器无关的方法来正确计算scrollTop这是正确的边界,所以它可以与 Chrome 一起使用吗?

顺便说一句,我在 stackoverflow 上发现了这个问题:跨浏览器设置元素ScrollTop的方法?。也许这适用于 DIV,但不适用于 SELECT 元素和/或不适用于 Chrome。

Thanks!

更新:这是一个演示该问题的 HTML 页面:

<html>
<head>

<style type="text/css">
.fields9{font-size:15px;height: 180px; width:420px; overflow: auto; border:1px solid #2d2b2d;}
</style>

</head>
<body>

<select multiple="multiple" size="10" id="myselect" class="fields9">
<option>firstone</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>option</option>
<option>lastone</option>
</select>

<script type="text/javascript">

element=document.getElementById("myselect");
//element.scrollTop = element.scrollHeight;
element.scrollTop = element.scrollHeight - element.clientHeight;

</script>

</body>
</html>

如果我在 Chrome 中查看此内容,最后一个选项“lastone”大部分会被切掉底部。但是,如果我删除class="fields9"属性,问题就消失了。


摆脱 fields9 声明中的 Overflow: auto ,使其在 Firefox 和 Chrome 中正常工作。这是工作示例:http://jsfiddle.net/c4LDv/7/.

遗憾的是,我无法找到任何使其在 Opera 中工作的解决方案 - 显然你无法在 Opera 中以编程方式滚动选择...

Edit:我想出了一种黑客方法,使用 selectedIndex 触发滚动到最后一个选项。在这里查看:http://jsfiddle.net/c4LDv/16/它适用于 Chrome、Firefox 和 Opera。However- 如果已经选择了一个或多个选项(在页面加载时),它不会向下滚动到 Opera 中的最后一个选项 - 请在此处查看http://jsfiddle.net/c4LDv/15/- 我无法改变这种行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript:以编程方式将非弹出 SELECT 元素滚动到 Chrome 中的底部 的相关文章

随机推荐