Javascript Scroll Handler没有触发

Saj*_*kar 16 javascript event-handling dom-events

我所要做的就是在DIV滚动时调用一个函数.为简单起见,我没有指定任何其他内容.另外,我只关注与DOM兼容的浏览器scroll(不是IE).

我的问题是滚动处理程序永远不会被调用.如果我替换了clickto DIV,它会在我点击时起作用.不知何故滚动不起作用.

请注意:我不能用scroll:(

这是我的代码:

HTML:

<div id="test">--long content--</div>
Run Code Online (Sandbox Code Playgroud)

JS:

   function myFunc() {
        console.log('in myFunc');
    }
    var objTable = document.getElementById("test");

    objTable.addEventListener("scroll", function () {
        myFunc();
    }, false);
Run Code Online (Sandbox Code Playgroud)

小提琴:

http://jsfiddle.net/yymg5/7/

Und*_*ned 23

这是因为窗口不是div而是滚动.尝试将元素侦听器更改为div的父级(在本例中为窗口),如下所示.

window.addEventListener("scroll", function () {
    myFunc();
}, false);
Run Code Online (Sandbox Code Playgroud)

  • 匿名函数是不必要的.您可以将myFunc作为一阶函数传递:window.addEventListener('scroll',myFunc,false); (8认同)

Jer*_*yal 12

如果尽管尽了最大努力,滚动事件仍未触发,那么您可以尝试滚轮事件:

document.addEventListener('wheel', (event) => {console.log('i scrolled')});
Run Code Online (Sandbox Code Playgroud)


Vik*_*tya 8

我的情况类似。该代码是正确的,但无法正常工作,因为,

window.addEventListener("scroll", function () {
    myFunc(); 
}, false);
Run Code Online (Sandbox Code Playgroud)

滚动事件未触发。因为我的身体在滚动而不是documentElement。

我只是height: 100%从我的身体标签中删除,然后滚动事件开始触发。

  • @ElliotSchep我专注于身体的“高度:100%”属性。 (2认同)
  • 好的。也许发表评论会更好一些? (2认同)

Fel*_* Jr 6

就我而言,我height: 100%体内有一个。因为我只想在一个特殊的 div 中应用滚动事件。

然后,这解决了问题:

document.querySelector('#myDiv').addEventListener('scroll', () => {
    console.log('scroll event fired!')
 });
Run Code Online (Sandbox Code Playgroud)