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

offsetParent.scrollTop doesn't work in most browsers

本文关键字:不起作用 浏览器 大多数 scrollTop offsetParent      更新时间:2023-09-26

我做错了什么吗?看起来这只适用于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)

只是阅读文档上的offsetParent,看看在Chrome和Firefox中发生了什么,很明显,offsetParent被设置为<body>元素,你的div与id="test"没有定位。

如果你把position: relative添加到你的容器div,它会把它作为offsetParent并正常工作。我不知道这是否是你正在寻找的修复,但它工作。

当然,另一种选择是使用.parentElement而不是offsetParent,这取决于您的用例。

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

offset parent不是用来查找节点的父元素,而是用来查找"最近的表单元格或根元素",在您的情况下是<body>标记。参见MDN文档offsetParent