簡體   English   中英

未捕獲ReferenceError,我的函數未定義

[英]Uncaught ReferenceError, my function is not defned

我正在創建一個動態滾動div,它在Jsfiddle上工作正常,如此處所示-> http://jsfiddle.net/9zXL5/19/embedded/result/但在瀏覽器上卻得到了:

未被捕獲的TypeError:無法將屬性'onscroll'設置為null

因此,我在代碼中添加了$(document).ready(function (){

未捕獲的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;

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

movelist.onscroll = yHandler;

在您的document.ready調用中。

或者,擺脫document.ready調用(無論如何似乎都沒有jQuery),然后將代碼放在文檔末尾的腳本塊中,位於結束body標記之前。

jsFiddle示例

您需要在標簽$(document).ready(function (){...});之外定義函數$(document).ready(function (){...});

它正在您的小提琴中工作,因為所有內容都在同一范圍內。 您在$(document).ready之外聲明了movelist 移動var movielist = ...movielist.onscroll = yHandler; $(document).ready

您還可以將yHandler函數移至$(document).ready

您應該將所有代碼移到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與使用它的地方在同一范圍內。 在您的示例中,它被定義為內部函數,並且您試圖從函數外部訪問它。 當定義內部函數時,它們就像局部變量一樣,只能由函數本身訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM