将JavaScript scroll top更改为id或类而不是正文

将JavaScript scroll top更改为id或类而不是正文,javascript,actionscript-2,onscroll,onscrolllistener,Javascript,Actionscript 2,Onscroll,Onscrolllistener,我有一份附在页面顶部的菜单。我可以将其更改为div、call或id,而不是使用body来显示位置 我的当前代码 这段代码告诉侧菜单根据一个类来定位自己,一旦我从页面顶部滚动了40px,我如何更改它,使其从一个ID或类变成40px window.onscroll = function () {onScrollNav()}; function onScrollNav() { if (document.body.scrollTop > 40 || document.documentEl

我有一份附在页面顶部的菜单。我可以将其更改为div、call或id,而不是使用body来显示位置

我的当前代码 这段代码告诉侧菜单根据一个类来定位自己,一旦我从页面顶部滚动了40px,我如何更改它,使其从一个ID或类变成40px

 window.onscroll = function () {onScrollNav()};

function onScrollNav() {
   if (document.body.scrollTop > 40 || document.documentElement.scrollTop > 40) {
        document.getElementById("mySidenav").className = "sidenavScroll";
        console.log("you hit 40px !!");
    } else {
        document.getElementById("mySidenav").className = "sidenavScrollReset";
        console.log("you back to 0 !!");
    }
}

我认为你最好的办法是得到滚动位置,元素的偏移量和问题中的ID,最后做一些快速的数学运算

var elOffset = document.getElementById('<ID HERE>').getBoundingClientRect();
function onScrollNav() {
    var diff = (document.documentElement.scrollTop - elOffset.top);
    if (diff > 40) {
        document.getElementById("mySidenav").className = "sidenavScroll";
        console.log("you hit 40px offset from the element with ID!!");
    } else {
        document.getElementById("mySidenav").className = "sidenavScrollReset";
        console.log("you back to 0 !!");
    }
}
var elOffset=document.getElementById(“”).getBoundingClientRect();
函数onScrollNav(){
var diff=(document.documentElement.scrollTop-elOffset.top);
如果(差异>40){
document.getElementById(“mySidenav”).className=“sidenavScroll”;
log(“您与ID为!!”的元素的偏移量达到了40px);
}否则{
document.getElementById(“mySidenav”).className=“sidenavScrollReset”;
log(“你回到0!!”;
}
}

所以参考元素,确定位置,找出差异。谢谢,我会试试这个