我想要的是什么:在滚动时向窗口添加事件侦听器,但在触发某个功能时仅。我希望它的工作方式是:
foo()
window.addEventListener("scroll", bar());
bar()
(直到我决定在其他地方removeEventListener()
。) 会发生什么: bar()
只执行一次 - 在foo()
的生命期内,我想。
解决方法是
bar()
内的代码封装在if (some_boolean === true) {
,some_boolean
结束之前将foo()
变量(全局声明)设置为true。这样,我得到了我需要的滚动功能,但现在 bar()
并且它的布尔检查在每个滚动时执行,当时有'绝对没有必要。
问题:如何添加事件处理程序以使其有效地运行bar()?
答案 0 :(得分:2)
bar()
似乎被调用,未在window.addEventListener("scroll", bar());
引用。尝试引用bar
作为处理程序,以便在scroll
事件发生时进行调用
window.addEventListener("scroll", bar);