2011-12-21 62 views
0

我做錯了什麼?它看起來像只適用於IE瀏覽器,雖然我不明白我期望別人無法處理。offsetParent.scrollTop在大多數瀏覽器中不起作用

<div id="test" style="height:4em;overflow:scroll;"> 
one<br />two<br />three<br />four<br />five<br />six<br />seven<br />eight<br />nine<br />ten<br /> 
<b id="item1">I should come into view!</b> 
</div> 
<script><!-- 
document.getElementById("item1").offsetParent.scrollTop=1000; 
//--></script> 

(請不要回答你爲什麼不使用「測試」,因爲這是一個簡單的例子來證明我有使用offsetParent問題)

回答

4

剛讀documentation on offsetParent和期待在Chrome和Firefox中會發生什麼情況,很明顯,offsetParent正在設置爲<body>元素,而您的div與id="test"未定位。

如果您將position: relative添加到您的容器div中,它會將其作爲offsetParent並正常工作。我不知道這是你正在尋找的修復程序,但它有效。

當然,替代方法是使用.parentElement而不是offsetParent,具體取決於您的使用情況。

+0

'style =「position:relative; height:4em; overflow:scroll;」'做的竅門,謝謝 – 2011-12-21 22:08:08

0

使用document.getElementById("item1").parentElement.scrollTop = 1000

偏移父母並不意味着找到寧 「最近的表格單元格或根元素」,這在你的情況是<body>標籤節點的父元素。 查看MDN文檔offsetParent

+0

這不適用於我正在處理的更大的應用程序,因爲該項目可能具有更高槓杆上的'滾動'元素,那麼直接parentElement。我已經嘗試了一個while循環,並不斷地獲取parentElement,直到'x.style.overflow =「scroll」',但沒有奏效。 – 2011-12-21 21:06:52

+0

如果是這種情況,那麼@ Vibhu的答案就是你要找的。使用滾動設置元素以具有'position:relative' – 2011-12-21 21:09:39

相關問題