JS:让两个函数做同样的事情

JS: Making two functions do the same thing

有没有办法缩短它?

var scrollPos = function() {
    var bodyTopPos =
        header.style.top <
        ( document.body.scrollTop || document.documentElement.scrollTop ) -91;
        header.setAttribute('class', bodyTopPos ? 'sticky' : '');
}();

window.onscroll = function() {
    var bodyTopPos =
        header.style.top <
        ( document.body.scrollTop || document.documentElement.scrollTop ) -91;
        header.setAttribute('class', bodyTopPos ? 'sticky' : '');
}

我试过写下面的内容,但它似乎自动将 header class 设置为置顶。

var scrollPos = function() {
    var bodyTopPos =
        header.style.top <
        ( document.body.scrollTop || document.documentElement.scrollTop ) -91;
        header.setAttribute('class', bodyTopPos ? 'sticky' : '');
}();

window.onscroll = scrollPos();

你可以看到我的工作fiddle例子HERE

简单,只需将其命名为函数,调用它,并将其设置为 onscroll 处理程序。

function scroll() {
    var bodyTopPos =
        header.style.top <
        ( document.body.scrollTop || document.documentElement.scrollTop ) -91;
        header.setAttribute('class', bodyTopPos ? 'sticky' : '');
}
scroll();
window.onscroll = scroll;