我无法通过。
我需要从jquery对象获取offset()。top,这是我的代码
parentLi = $(element).parents("li");
parentLiOffset = parentLi.offset();
top = parentLiOffset.top;
left = parentLiOffset.left;
console.log(parentLiOffset);
console.log(top);
console.log(left);
这就是控制台回馈的内容:
Object { top=208, left=311}
Window /demo/
311
正如你所看到的,我无法获得“顶级”价值。我是firefox,如果这有任何区别的话。
谢谢!
答案 0 :(得分:13)
问题是您没有使用var
关键字来声明变量。 top
是window
的属性(只读属性,这就是您的代码不会覆盖它的原因)。这样做:
var top = parentLiOffset.top;
var left = parentLiOffset.left;
left
无法使用var
,因为left
不是window
的属性。您的代码会创建名为window
的{{1}}属性,并为其指定正确的值。但是,最好始终使用left
关键字来防止变量泄漏到全局范围。
var
属性“返回对窗口层次结构中最顶层窗口的引用”。
答案 1 :(得分:1)
您忘了在本地声明这些变量。
这样做:
var top = ...
var left = ...
如果您未预先声明变量,则会将它们视为全局属性。在这种情况下,您尝试写入只读的window.top
属性。
事先未能声明变量是危险的,因为它会产生意想不到的结果(如您自己所见)。
答案 2 :(得分:1)
这是唯一的代码还是你得到了top
和consol.log的定义。
是的,当你声明变量时,习惯在你的变量之前写“var”是一件好事。