2013-03-07 79 views
6

我所要做的就是在滚动DIV时调用一个函数。为了简单起见,我没有指定其他任何东西。此外,我只看着符合DOM的浏览器,如Chrome,Safari(不是IE)。Javascript Scroll Handler not firing

我的问题是滚动处理程序永远不会被调用。如果我将scroll替换为click,则点击时它将起作用。不知何故,滚动不起作用。

请注意:我不能使用jQuery :(

这里是我的代码:

HTML:

<div id="test">--long content--</div> 

JS:

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

    objTable.addEventListener("scroll", function() { 
     myFunc(); 
    }, false); 

FIDDLE:

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

回答

11

这是因为窗口没有滚动股利。尝试将元素侦听器更改为div的父级(在本例中为窗口),如this

window.addEventListener("scroll", function() { 
    myFunc(); 
}, false); 
+0

谢谢,你说得对。我向我的DIV添加了一个溢出属性并添加了一些内容。现在它甚至可以在DIV对象上工作。已经更新了小提琴。 – 2013-03-07 16:22:17

+1

匿名函数是不必要的。您可以将myFunc作为一阶函数传递: window.addEventListener('scroll',myFunc,false); – bean 2017-02-02 20:22:33