2011-10-28 82 views
2

的財產「頂」我有函數,滾動到一個支撐點位在列表JavaScript的 - 無法讀取空

function snapToAnchor(anchor) { 
    $('#divProductScroll').scrollTop(0); 
    var offset = $(anchor).offset().top - $('#divProductScroll').offset().top; 
    $('#divProductScroll').scrollTop(offset); 
    //$('#divProductScroll').animate({ scrollTop: offset }, 250); 
} 

但是這是給我錯誤有時

無法讀取屬性「空

的頂部」我不是用JavaScript

這麼好任何一個可以幫助這個問題?

我發現了這個問題。


這snapToAnchor函數是在一個對話框模型,所以第二次當我打這個函數,沒有列表生成,這就是爲什麼我有空值,所以我做了什麼是在此功能之前,我重新創建模態和然後進入該函數,現在沒有空範圍。

+2

我猜你沒有傳遞一個合法的標籤名稱給''anchor'參數中的函數。 –

+0

這兩個.offset()調用之一正在返回null。拆分減法並將每個偏移量分配給一個變量,並查看哪個變量爲空。 –

+0

可以學習如何使用螢火蟲,然後在函數內部放置一段時間,這樣您就可以看到變量'anchor'中的內容 – yitwail

回答

2

錨點變量不包含您的站點的有效選擇器。在此調用offset將返回null

var a = $('#non-existing-id'); //returns empty object 
var b = a.offset(); // returns null 
b.top; //throws a TypeError exception 

您只需在第3行插入alert(anchor)這將顯示您的變量的內容調試程序。

0
$(anchor).offset().top 

通常會輸出一個不是數字的字符串......類似於100px。 你需要從字符串中提取數字。

var topoffset = $(anchor).offset().top; 
topoffset = topoffset.split('px', 1); 
1

如果具有的DOM元素的ID - 與jQuery的使用它,然後正確的方法:

$('#' + anchor).offset() 

,否則你會得到一個零(和錯誤)。