2013-03-07 83 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