我想知道这段代码是否有任何原因不起作用......
top = $(this).find('ul').position().top;
它可以在IE,Firefox和Safari中运行,但是当我在Chrome中提示输出时它会显示DOM窗口对象...我需要一个整数。为什么它会警告DOM窗口对象?
答案 0 :(得分:12)
你确定你真的警告那个 top
吗?回想一下,top
是浏览器托管的JavaScript中的预先存在的全局变量(它是window.top
,顶层窗口。)
更新:有趣的是,Chrome不会让您隐式覆盖top
(这可能是一件好事):Demo。只需在代码所在的任何函数内声明你的变量(无论如何总是一个好主意)(函数中的代码 ,对吗?),这将shadow它,所以这将是工作:Demo。 E.g:
var top = $(this).find('ul').position().top;
声明变量非常重要,以避免成为Horror of Implicit Globals的牺牲品。正如你在这种情况下发现的那样,避免全局变量总是最好的,因为如果你声明它,Chrome甚至不允许你使用top
作为全局变量(再次保护window.top
)。
答案 1 :(得分:2)
确保将值分配给本地范围的变量。使用var
关键字。
var top = $(this).find('ul').position().top;