滚动上有多个功能?

时间:2018-01-22 23:29:32

标签: javascript

使用我当前的代码,我只能有一个或另一个,这是我的粘性导航或从文档顶部出现在100px处的返回顶部按钮。有什么办法可以同时使用吗?

这是我目前的代码

window.onscroll = function() {navFunction()};
var navbar = document.getElementById("navbar");
var sticky = navbar.offsetTop;
function navFunction() {
  if (window.pageYOffset >= sticky) {
    navbar.classList.add("sticky")
  } else {
    navbar.classList.remove("sticky");
  }

window.onscroll = function() {scrollFunction()};
function scrollFunction() {
    if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 100) {
        document.getElementById("myBtn").style.display = "block";
    } else {
        document.getElementById("myBtn").style.display = "none";
    }
}
function topFunction() {
    document.body.scrollTop = 0; // For Safari
    document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
}
抱歉,如果这是一个愚蠢的问题。我还是新手:)

提前致谢!

3 个答案:

答案 0 :(得分:1)

您可以在window.onscroll匿名函数中调用这两个函数:

window.onscroll = function() {
    navFunction();
    scrollFunction();
};

或者,您可以使用标准addEventListener方法注册这两个函数:

window.addEventListener("scroll", navFunction);
window.addEventListener("scroll", scrollFunction);

请注意,这样我们不会将括号与两个函数一起使用,因为我们没有执行它们。我们只是告诉事件监听器事件发生时它将执行的函数的名称。

答案 1 :(得分:0)

您可以做的一件事就是重新组织您的代码以调用这两个函数。

// Define the functions and the variables you need first here
// function topFunction() {...}  etc

// call both functions inside the scroll event here.
window.onscroll = function() {
    scrollFunction();
    navFunction()
};

在事件上运行多个函数的另一种方法是使用addEventListener()

window.addEventListener("scroll",scrollFunction,false);
window.addEventListener("scroll",navFunction,false);

您可以随意添加任意数量的功能,但您可能会使网页速度变慢。

答案 2 :(得分:0)

pd.concat(df_list)