JavaScript延迟为div添加scroll事件监听器不生效如何解决?
问题原因
- 错误1:
addEventListener的第二个参数需要接收函数引用,你当前直接写console.log("testing")属于立即执行代码,运行到这行时就会打印一次,把执行后的返回值undefined传给了监听器,自然滚动时不会触发任何逻辑。 - 错误2:外层
setTimeout(ff(),500)这里加了括号会立即执行ff函数,而不是延迟500ms后执行,要传递函数引用只需写函数名ff即可。
修正后代码
function ff(){ // 内层的setTimeout(...,0)如果没有特殊业务逻辑可以直接去掉,不影响功能 document.getElementById("chatContainer").addEventListener("scroll", function() { console.log("testing") }) } // 注意这里只传函数名ff,不加括号 setTimeout(ff, 500)
额外说明
如果需要简化写法,也可以用箭头函数定义事件回调:
document.getElementById("chatContainer").addEventListener("scroll", () => console.log("testing"))
内容的提问来源于stack exchange,提问作者Jip Helsen
相关产品推荐
相关产品推荐

