Javascript 如何获取元素的当前滚动位置?

Javascript 如何获取元素的当前滚动位置?,javascript,reactjs,Javascript,Reactjs,我试图获取div元素中滚动条的当前位置,但问题是当我获取元素:div.scrollTop值始终为:0 这是React应用程序,在父组件中,我有一个在子组件中传递的方法: handleScrollPosition = (collectionId) => { const el = document.getElementById(collectionId); this.scrollTop = window.pageYOffset || el.scrollTop; // thi

我试图获取
div
元素中滚动条的当前位置,但问题是当我获取元素:
div.scrollTop
值始终为:
0

这是React应用程序,在父组件中,我有一个在子组件中传递的方法:

 handleScrollPosition = (collectionId) => {
   const el = document.getElementById(collectionId);
   this.scrollTop = window.pageYOffset || el.scrollTop;    // this el.scrollTop is always 0 ? :( 
   this.scrolledCollectionId = collectionId;
 };
在下一个
div
的子组件中调用此方法:

<div
   className="collection-body"
   id={this.props.id}
   onScroll={() => {
     this.props.handleScrollPosition(this.props.id);
   }}
>
{
this.props.handleScrollPosition(this.props.id);
}}
>
我在这里做的是:

  • 我正在获取元素id

  • 在父组件中按id获取该元素

  • 尝试获取
    scrollTop的当前位置

  • 并将当前位置保存在变量
    this.scrollTop中

  • 然后想要滚动到保存的位置

    但问题是我无法获取并保存正确的当前位置


  • 从“当一个元素的内容没有生成垂直滚动条时,它的scrollTop值为0。”那么,您的子元素是否有滚动条?您的意思可能是我试图从错误的元素获取scrollTop值?这很有意义……可能不需要使用
    窗口。pageYOffset
    ,只需编写
    this.scrollTop=el.scrollTop@JamesDelaney也许:我自己也不确定。如果从父元素获取scrollTop值,则会告诉您父元素的滚动条移动了多远。子元素的滚动位置是什么意思?例如,您的意思是它离滚动出视图有多远?如果
    el
    仍然是子元素,它是否有滚动条?否则,设置scrollTop将不会起任何作用。设置scrollTop会更改滚动条的位置。从“当元素的内容不生成垂直滚动条时,其scrollTop值为0”。那么,您的子元素是否有滚动条?您的意思可能是我试图从错误的元素获取scrollTop值?这很有意义……可能不需要使用
    窗口。pageYOffset
    ,只需编写
    this.scrollTop=el.scrollTop@JamesDelaney也许:我自己也不确定。如果从父元素获取scrollTop值,则会告诉您父元素的滚动条移动了多远。子元素的滚动位置是什么意思?例如,您的意思是它离滚动出视图有多远?如果
    el
    仍然是子元素,它是否有滚动条?否则,设置scrollTop将不会起任何作用。设置scrollTop可更改滚动条的位置。