我做错了吗?看起来这只适用于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
时遇到了问题
答案 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