繁体   English   中英

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});
    };

抱歉,在这个问题上我没有更多的选择了。 任何帮助将不胜感激。 谢谢。

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

var mainNavigationPosition = mainNavigationOffset.left;

该错误意味着mainNavigationOffset未定义。

因为mainNavigationOffset设置为:

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

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

如jquery文档所述:

注意:jQuery不支持获取隐藏元素的偏移坐标,也不支持在body元素上设置边框,边距或填充。

尽管可以使用visible:hidden set获得元素的坐标,但display:none不会从渲染树中排除,因此其位置是不确定的。

检查该元素是否实际可见。

另一个选择(看来确实发生了什么)是jquery表达式:

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

不返回任何元素。

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

显示不得等于无 显示不应等于无

可见性必须等于可见 可见性应等于可见

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

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

试试这个, jQuery文档

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

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

链接

检查您的jQuery版本是否为1.2以上,.offset()方法可能在较早的版本中不起作用。

jQuery 1.2更改日志

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM