2011-10-28 84 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() 

,否则你会得到一个零(和错误)。