先日遭遇したJavaScriptでの現象について。
タイトルにある通り、scrollTop
プロパティに値を指定しても、その位置にスクロールしない現象が発生しました。
何故か scrollTop から返ってくる値が常に 0 になっており、それが原因のようです。
で、こちらの問題の解決にあたって、下記の記事が参考になりました。
document.body.scrollTopが常に0を返す謎を調べてみた – Qiita
https://qiita.com/tkengo/items/ee758c75ba874757b7fd
この記事によると、原因は scrollTop プロパティでスクロール位置を取得したい要素に下記の CSS を指定するとのことでした。
#sample { overflow-y: auto; width : 300px; height: 200px; }
width
と height
の値は任意です。
現状にあった値に適宜変更してください。
上記を指定することで、id='sample'
の要素がスクロール可能な範囲となり、無事 scrollTop の値を取得することができるようになりました。
なお、HTML と JavaScript のサンプルコードは下記のとおりです。
JavaScript はボタン押下時など、任意のタイミングで実行してください。
<body> <div id='sample'> <!-- 要素の中身を記入 --> </div> </body>
var element = document.getElementById('sample'); var scroll-top = element.scrollTop;
以上、JavaScript の scrollTop が効かない時の対処法でした。
JavaScript というよりも、CSS の修正でしたが、ご参考になれば幸いです。