JavaScript 错误 : Uncaught TypeError: Cannot read property 'left' of undefined

标签 javascript jquery css console.log

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

抱歉,关于这个问题,我没有太多可以讨论的了。任何帮助将不胜感激。谢谢。

最佳答案

您正在从上一行返回的对象中读取属性left。失败的行是:

var mainNavigationPosition = mainNavigationOffset.left;

该错误表示 mainNavigationOffset 未定义。

因为mainNavigationOffset设置为:

var mainNavigationOffset = $('.js-nav-container > ul').offset();

jquery 可能无法获取元素 $('.js-nav-container > ul') 的偏移量。

如 jquery 文档所述:

Note: jQuery does not support getting the offset coordinates of hidden elements or accounting for borders, margins, or padding set on the body element.

While it is possible to get the coordinates of elements with visibility:hidden set, display:none is excluded from the rendering tree and thus has a position that is undefined.

检查元素是否确实可见。

另一种选择(这似乎是真正发生的事情)是 jquery 表达式:

$('.js-nav-container > ul')

不返回任何元素。

要查看元素是否可见,可以使用 chrome 开发工具:

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

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

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

$('.js-nav-container > ul').css("display");
$('.js-nav-container > ul').css("visibility");

关于JavaScript 错误 : Uncaught TypeError: Cannot read property 'left' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35299010/

相关文章:

javascript - 如何使用客户端 javascript 将外部/内部 css 样式转换为内联样式属性

javascript - 在文本末尾移动一个 div

javascript - SVG 上的鼠标行为滞后

javascript - 当你链式属性(property)时,你会调用它吗?

jquery - 如何在bootgrid中进行离线排序?

javascript - 无法解析日期

html - 更改字体大小并在导航栏中居中对齐 - Bootstrap

javascript - 我们可以在 Highcharts 折线图中找到击穿点/击穿分析吗?

javascript - 我无法理解我的 If 陈述如何被视为真实

jQuery.ScrollTo/jQuery.SerialScroll 水平滚动