javascriptreactjsscrolltopscroll-position

How to get scroll Position in reactjs when click on button


As you can see it I am not able to scroll down the page when I click on the button, This all code running in one file in App.js
Even I tried with useRef() and UseState() also but not working
I need help in JavaScript logic only
Javascript:

const myFunction = () => {
        const element = document.getElementById("myDIV");
        element.scrollLeft = 50;
        element.scrollTop = 10;
    };

HTML:

<div
    id="myDiv"
    style={{ height: "250px", width: "250px", overflow: "auto" }}
>
        <div
                id="content"
                style={{
                height: "800px",
                width: "2000px",
                backgroundColor: "coral",
            }}
        >
        <button onClick={myFunction}>Scroll</button>
        <p>Some text inside a div element.</p>
        <p>Some text inside a div element.</p>
        <p>Some text inside a div element.</p>
        <p>Some text inside a div element.</p>
    </div>
</div>

Solution

  • Here:

    const element = document.getElementById("myDIV");
    

    the ID is wrong. It should be myDiv because you set the div's ID to myDiv:

    <div
        id="myDiv"
        style={{ height: "250px", width: "250px", overflow: "auto" }}
    >
    

    and also you can use the scroll function of Element instead of setting scrollLeft and scrollTop:

    const myFunction = () => {
      const element = document.getElementById("myDiv");
      element.scroll(50, 10);
    }
    

    But I recommend using refs (I know you mentioned it but I'm not sure if you used it correctly).

    Create a ref:

    const divRef = useRef();
    

    Assign the ref to the div:

    <div
        id="myDiv"
        ref={divRef}
        style={{ height: "250px", width: "250px", overflow: "auto" }}
    >
    

    Then scroll it (you don't need the element variable anymore):

    const myFunction = () => {
      divRef.current.scroll(50, 10);
    };