我SELECT
在网页中有一个元素,我希望它加载滚动到底部。在大多数浏览器中,我可以这样做:
myselect.scrollTop = myselect.scrollHeight;
虽然scrollHeight
超出了界限,但浏览器会发现并适当地限制它。谷歌浏览器除外。我可以提交错误报告,但这并不能帮助我解决眼前的问题。所以我尝试了这个:
myselect.scrollTop = myselect.scrollHeight - myselect.clientHeight;
但这减去了太多——元素底部下方有一些项目。我也尝试过减法offsetHeight
,但情况稍差。
有谁知道一种与浏览器无关的方法来正确计算scrollTop
正确的边界,以便它可以与 Chrome 一起使用?
顺便说一句,我在 stackoverflow 上发现了这个问题: Cross-Browser method for setting ScrollTop of an element? . 也许这适用于 DIV,但不适用于 SELECT 元素和/或不适用于 Chrome。
谢谢!
更新:这是一个演示问题的 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"
属性,问题就会消失。