JavaScript 错误:未捕获的 TypeError:无法读取未定义的属性“left”

JavaScript error: Uncaught TypeError: Cannot read property 'left' of undefined

提问人:Singleton 提问时间:2/10/2016 最后编辑:Singleton 更新时间:2/10/2016 访问量:15404

问:

这是一个非常烦人的错误,关于这个控制台错误似乎有各种问题。它并没有给我很多使用 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});
    };

对不起,关于这个问题,我没有太多可说的了。任何帮助将不胜感激。谢谢。

JavaScript jQuery CSS 控制台 .log

评论

2赞 Nebula 2/10/2016
$nothing.offset()在尝试访问它的属性时会抛出错误。也许问题是没有找到任何东西。null$('.js-nav-container > ul')
0赞 sdgluck 2/10/2016
提示:尝试使用 Chrome 调试器并在函数的第一行设置断点。然后检查每个变量的值。
0赞 trenthaynes 2/10/2016
mainNavigationOffset初始化后的值是多少?
0赞 Singleton 2/10/2016
@sdgluck,不知道如何设置突破点。

答:

1赞 phenxd 2/10/2016 #1

试试这个,jQuery doc

dropMenu.offset({ left: mainNavigationPosition - 60 });

否则,您可能需要将位置设置为绝对或相对:

链接

1赞 Marvin Medeiros 2/10/2016 #2

检查您的 jQuery 版本是否高达 1.2,.offset() 方法在旧版本中可能不起作用。

jQuery 1.2 更改日志

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 开发工具:

display 不能等于 nonedisplay should not be equals to none

可见性必须等于可见性visibility should be equals to visible

或者,您可以简单地在控制台中执行:

$('.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
显示等于块,我根本看不到可见性。我正在附上屏幕截图。