这是一个非常烦人的错误,关于这个控制台错误似乎有各种各样的问题。使用 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 开发工具:
或者你可以简单地在控制台中执行:
$('.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/