我在網頁中有一個SELECT
元素,並且我希望它將滾動加載到底部。在大多數的瀏覽器,我可以這樣做:Javascript:以編程方式將非彈出式SELECT元素滾動到Chrome中的底部
myselect.scrollTop = myselect.scrollHeight;
雖然scrollHeight
是出界,瀏覽器明白這一點,並適當地限制它。除谷歌瀏覽器外。我可以提交錯誤報告,但這並不能幫助我解決眼前的問題。所以我試過這個:
myselect.scrollTop = myselect.scrollHeight - myselect.clientHeight;
但是減去太多 - 有元素底部以下的項目。我也試過減去offsetHeight
,但那個比較糟糕。
有誰知道瀏覽器不可知的方式來正確計算scrollTop
是正確的入境,所以它將與Chrome一起工作?
順便說一下,我發現這個問題上的計算器: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"
屬性,問題就會消失。
你可以設置一個jsfiddle來顯示問題,因爲scrollHeight工作在chrome中,我一直都在使用它。 – Ryan
我希望我粘貼在我編輯的代碼是你正在尋找的。 –