提问人:Singleton 提问时间:2/10/2016 最后编辑:Singleton 更新时间:2/10/2016 访问量:15404
JavaScript 错误:未捕获的 TypeError:无法读取未定义的属性“left”
JavaScript error: Uncaught TypeError: Cannot read property 'left' of undefined
问:
这是一个非常烦人的错误,关于这个控制台错误似乎有各种问题。它并没有给我很多使用 chrome 在控制台中工作的机会。
/**
* Dropdown menu positioning
*/
loc.dropMenuPositioning = function (){
var dropMenu = $('.js-dropdown-item-wrap');
var mainNavigationOffset = $('.js-nav-container > ul').offset();
var mainNavigationPosition = mainNavigationOffset.left;
dropMenu.css({'left' : mainNavigationPosition - 60});
};
对不起,关于这个问题,我没有太多可说的了。任何帮助将不胜感激。谢谢。
答:
1赞
phenxd
2/10/2016
#1
试试这个,jQuery doc
dropMenu.offset({ left: mainNavigationPosition - 60 });
否则,您可能需要将位置设置为绝对或相对:
1赞
Marvin Medeiros
2/10/2016
#2
检查您的 jQuery 版本是否高达 1.2,.offset() 方法在旧版本中可能不起作用。
4赞
Marco Altieri
2/10/2016
#3
您正在读取上一行中返回的对象留下的属性。失败的行是:
var mainNavigationPosition = mainNavigationOffset.left;
该错误表示 mainNavigationOffset 未定义。
因为 mainNavigationOffset 设置为:
var mainNavigationOffset = $('.js-nav-container > ul').offset();
JQuery 可能无法获取元素 $('.js-nav-container > ul') 的偏移量。
正如jquery文档所述:
注意:jQuery不支持获取hided的偏移坐标 元素或考虑边框、边距或填充集 body 元素。
虽然可以获取元素的坐标 可见性:隐藏集,显示:无从渲染中排除 树,因此具有未定义的位置。
检查元素是否确实可见。
另一种选择(似乎真的发生了)是jquery表达式:
$('.js-nav-container > ul')
不返回任何元素。
要查看元素是否可见,您可以使用 chrome 开发工具:
或者,您可以简单地在控制台中执行:
$('.js-nav-container > ul').css("display");
$('.js-nav-container > ul').css("visibility");
评论
0赞
Singleton
2/10/2016
如何检查元素是否实际可见?我应该如何前进?
0赞
Singleton
2/10/2016
看起来你可能是对的,当我评估功能时,我得到了这个......未捕获的 ReferenceError:未定义 mainNavigationOffset (...)(匿名功能)@ VM95:1
1赞
Marco Altieri
2/10/2016
我添加了几张屏幕截图,以展示如何在 chrome 开发工具中检查可见性。
0赞
Marco Altieri
2/10/2016
应为要检查的元素打开该视图。
0赞
Singleton
2/10/2016
显示等于块,我根本看不到可见性。我正在附上屏幕截图。
评论
$nothing.offset()
在尝试访问它的属性时会抛出错误。也许问题是没有找到任何东西。null
$('.js-nav-container > ul')