0

私は動的スクロールdivを作成しています.Jsfiddleではうまく動作します.

キャッチされていない TypeError: null のプロパティ 'onscroll' を設定できません

それで、私$(document).ready(function (){は自分のコードに追加して得ました

Uncaught ReferenceError: yHandler が定義されていません

なぜこれらのエラーが発生するのか理解できませんが、jsfiddle ではスムーズに流れています。私が理解していないことや欠けていることを誰かが教えてくれたら、本当にありがたいです。問題のコードは以下です

var movelist = document.getElementById('movelist');
    $(document).ready(function (){
    function  yHandler (){
        var contentHeight = movelist.scrollHeight;
        var yOffset = movelist.clientHeight;
        var y = yOffset + movelist.scrollTop;
        if(y >= contentHeight){
            movelist.innerHTML += '<div class ="newData">hey look at me</div>';
        }
    }
});
movelist.onscroll = yHandler;
4

4 に答える 4

1

置く

var movelist = document.getElementById('movelist');

movelist.onscroll = yHandler;

document.ready 呼び出し内。

または、document.ready 呼び出しを取り除き (とにかくそこに jQuery がないようです)、コードをドキュメントの末尾の body タグの前のスクリプト ブロックに入れます。

jsFiddle の例

于 2012-09-18T19:27:59.273 に答える
0

すべてのコードを onload ハンドラ内に移動する必要があります

$(document).ready(function (){
    var movelist = document.getElementById('movelist');
    function  yHandler (){  
        var contentHeight = movelist.scrollHeight;
        var yOffset = movelist.clientHeight;
        var y = yOffset + movelist.scrollTop;

        if(y >= contentHeight){
            movelist.innerHTML += '<div class ="newData">hey look at me</div>';
        }          
    }
    movelist.onscroll = yhandler
});

これで、あなたyhandlerはそれを使用している場所と同じ範囲内にあります。あなたの例では、内部関数として定義されており、関数の外部からアクセスしようとしていました。内部関数を定義すると、それらはローカル変数のようになり、関数自体からのみアクセスできます。

于 2012-09-18T19:30:40.977 に答える
0

すべてが同じスコープ内にあるため、フィドルで機能しています。movelistあなたはあなたの外で宣言しています$(document).ready。との両方var movielist = ...movielist.onscroll = yHandler;内に移動します$(document).ready

yHandler関数を の外に移動することもできます$(document).ready

于 2012-09-18T19:29:32.663 に答える
0

タグの外側で関数を定義する必要があります $(document).ready(function (){...});

于 2012-09-18T19:28:09.943 に答える