2011-12-21 55 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>要素に設定されており、id="test"のdivが配置されていないことは明らかです。

position: relativeをコンテナdivに追加すると、それがoffsetParentとして取得され、正しく機能します。私はあなたが探している修正プログラムが、それが動作するかどうかはわかりません。

もちろん、代わりにoffsetParentの代わりに.parentElementを使用しています。

+0

位置:相対;高さ:4em;オーバーフロー:スクロール; "トリックを行います、ありがとう –

0

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

オフセットの親は、あなたのケースで<body>タグである 「最寄りのテーブルセルまたはルート要素」というノードの親要素を見つけるためのものではありません。 MDNドキュメントを参照offsetParent

+0

これは私が取り組んでいる大きなアプリケーションでは機能しませんが、そのアイテムは上位のレバーに「スクロール」要素を持ち、直接的なparentElementを持つことができるからです。私はwhileループを試して、 'x.style.overflow =" scroll "'までparentElementを継続的に取得していますが、これはうまくいきませんでした。 –

+0

その場合、@ Vibhuの答えはあなたが探しているものです。スクロールで要素に 'position:relative'を設定します。 –

関連する問題