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

时间:2015-01-10 19:53:43

标签: javascript function variables scope

有没有办法缩短它?

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' : '');
}

我尝试过编写以下内容,但它似乎会自动将标题类设置为粘贴。

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

window.onscroll = scrollPos();

您可以看到我的工作小提琴示例 HERE

1 个答案:

答案 0 :(得分:1)

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

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