offsetParent.scrollTop在大多数浏览器中不起作用

时间:2011-12-21 20:11:47

标签: javascript html dom

我做错了吗?看起来这只适用于IE,虽然我看不出别人无法处理的东西。

<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>

(请不要回答为什么不使用“test”,因为这是一个简化的例子来证明我在使用offsetParent时遇到了问题

2 个答案:

答案 0 :(得分:4)

只需阅读documentation on offsetParent并查看Chrome和Firefox中发生的情况,很明显offsetParent设置为<body>元素,而您的div设置为id="test"没有定位。

如果您将position: relative添加到容器div中,它会将其作为offsetParent拾取并正常工作。我不知道你是否正在寻找这个解决方案,但它确实有效。

替代方案当然是使用.parentElement而不是offsetParent,具体取决于您的使用情况。

答案 1 :(得分:0)

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

offset parent并不意味着找到节点的父元素而不是 “最近的表格单元格或根元素”,在您的情况下是<body>标记。 请参阅MDN文档了解offsetParent