これは正しい動作だと思われますが、要素のoffsetTopの実際の値を取得するために何かできるかどうかは疑問です。display:noneの要素のoffsetTopプロパティは常に0です。
希望の動作は、選択された項目が上部に表示されるようにリストがスクロールされるボタンをクリックしたときです。要素が表示されている間は正常に機能しますが、非表示にすることができますユーザーが非表示にしてからリストが目的の項目にスクロールされるときに非表示になっても発生する動作。その要素がまだページにできるようになりますよう
HTML
<div id='list-wrapper'>
<ul>
<li id='one'>One</li>
<li id='two'>Two</li>
<li id='three'>Three</li>
</ul>
</div>
CSS
.list-wrapper {
display: none;
position: relative;
overflow-y: scroll;
}
JS
let listElement: Element = document.getElementById('list-wrapper');
let li3: Element = document.getElementById('three');
listElement.scrollTop = li3.offsetTop;
にそれを回避する方法は、それを切り替えることはキャッシュになりますエレメントが隠されている場合、エレメントを表示するまでスクロール操作を行います。 –