我想要的:向滚动窗口添加一个事件监听器,但仅当某个函数被触发时。我希望它的工作方式是:
- 执行
foo()
- 在该函数内部,
window.addEventListener("scroll", bar());
- 然后,并且只有到那时,才会在每次滚动时执行
bar()
(直到我决定在其他地方removeEventListener()
)。
会发生什么: bar()
仅执行一次 - 我想是在 foo()
的生命周期内。
解决方法是
- 在函数外部添加事件监听器(全局),
- 将代码封装在
bar()
内if (some_boolean === true) {
, - 在
foo()
结束之前将我的some_boolean
变量(全局声明)设置为 true。
这样,我就获得了所需的滚动功能,但现在 bar()
及其 bool 检查会在每次滚动时执行,当完全没有必要的时候。
问题:如何添加事件处理程序以使其有效运行 bar()?
最佳答案
bar()
似乎被调用,而不是在 window.addEventListener("scroll", bar());
处引用。尝试引用 bar
作为发生 scroll
事件时调用的处理程序
window.addEventListener("scroll", bar);
关于javascript - 在函数内执行 addEventListener(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35979802/