2012-09-18 36 views
0

我創建一個dyanamic滾動的div和它在這裏看到的jsfiddle工作正常 - 在瀏覽器>http://jsfiddle.net/9zXL5/19/embedded/result/但我得到:未捕獲的ReferenceError,我的功能不defned

Uncaught TypeError: Cannot set property 'onscroll' of null

於是我加入$(document).ready(function(){我的代碼,並得到

Uncaught ReferenceError: yHandler is not defined

我不理解爲什麼我得到這些錯誤但其上的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; 

回答

0

它在你的小提琴工作,因爲一切都在同一個範圍之外的功能。您在$(document).ready之外聲明movelist。將您的$(document).ready中的var movielist = ...movielist.onscroll = yHandler;都移動。

您還可以將您的yHandler功能移動到$(document).ready之外。

+0

好的,謝謝你解釋錯誤的停止。那麼爲什麼我的div沒有被解僱呢? @Gromer – Octavius

+1

@Octavius你的意思是「我的div沒有被解僱」? –

+0

當我滾動

hey look at me
沒有顯示當我滾動像這裏 - > http://jsfiddle.net/9zXL5/21/ – Octavius

1

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

movelist.onscroll = yHandler; 

您的document.ready調用中。

或者,擺脫document.ready調用(您似乎沒有任何jQuery),然後將代碼放在文檔末尾的腳本塊中,然後放在關閉body標記之前。

jsFiddle example

0

您需要定義標籤$(document).ready(function(){...});

+0

這可行,但它不是正確的方法,因爲它是創建全局變量,所以你應該將所有內容都移動到'ready'函數中 –

+0

對了,你不需要在.ready()方法的外部定義函數 – sdespont

+0

實際上,有很多功能需要全球化。但是,如果一個函數不需要是全局的,那麼它就不應該,這裏的情況就是這樣 –

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是相同的範圍內正在使用它的地方內內移動所有的代碼。在你的例子中,它被定義爲內部函數,並且你試圖從函數外部訪問它。當你定義內部函數時,它們就像本地變量一樣,它們只能被函數本身訪問。

+0

嘿!我的div沒有被解僱,因爲它仍然是小提琴。思考爲什麼?@juanMendes – Octavius

相關問題