27

私がやろうとしているのは、aDIVがスクロールされたときに関数を呼び出すことだけです。簡単にするために、Imは他に何も指定していません。また、私はChrome、Safari(IEではない)のようなDOM準拠のブラウザーのみを見ています。

私の問題は、スクロールハンドラーが呼び出されないことです。scrolltoを置き換えると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);

フィドル:

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

4

5 に答える 5

34

これは、ウィンドウがdivではなくスクロールしているためです。このように、要素リスナーをdivの親(この場合はウィンドウ)に変更してみてください

window.addEventListener("scroll", function () {
    myFunc();
}, false);
于 2013-03-07T16:13:08.623 に答える
18

私の場合も同様の問題がありました。このコードは正しく、Undefinedによってすでに回答されています

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

しかし、それは機能していませんでした。

スクロールイベントが発生していませんでした。documentElementの代わりに私の体がスクロールしていたので。

bodyタグを削除height: 100%したところ、スクロールイベントが発生し始めました。

于 2018-08-09T06:44:15.083 に答える
3

私の場合、私はheight: 100%私の体にあります。スクロールイベントを特別なdivにのみ適用したかったので。

次に、これで問題が修正されました。

document.querySelector('#myDiv').addEventListener('scroll', () => {
    console.log('scroll event fired!')
 });
于 2019-11-26T12:44:40.503 に答える
3

height: 100%;フォームhtmlbodyCSSセレクターを削除して修正しました。

于 2021-03-04T11:06:25.027 に答える
1

あなたのdivがheight: 100%またはを持っているために起こりましたheight: 100vh。その場合、高さを指定すると、スクロールイベントは自動的に無効になります。

そのdivの高さを削除し、その親、子の高さを削除します。基本的に、その特定のdivは、その親または子ではなくスクロールする必要があります。

その後、これは機能するはずです。

const AppWrapper = document.getElementById('app-content');
AppWrapper.addEventListener('scroll', toggleVisibility);


toggleVisibility = () => {
   console.log('Do your thg');
};
于 2021-02-11T06:50:14.897 に答える