【问题标题】:JavaScript error: Uncaught TypeError: Cannot read property 'left' of undefinedJavaScript 错误:未捕获的类型错误:无法读取未定义的属性“左侧”
【发布时间】:2016-02-09 18:03:45
【问题描述】:

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

抱歉,我没有更多关于这个问题的内容。任何帮助将不胜感激。谢谢。

【问题讨论】:

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

标签: javascript jquery css console.log


【解决方案1】:

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

var mainNavigationPosition = mainNavigationOffset.left;

错误表示 mainNavigationOffset 未定义。

因为 mainNavigationOffset 设置为:

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

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

如 jquery 文档所述:

注意:jQuery 不支持获取 hidden 的偏移坐标 元素或考虑边界、边距或填充设置在 身体元素。

虽然可以通过以下方式获取元素的坐标 可见性:隐藏集,显示:无从渲染中排除 树,因此具有未定义的位置。

检查元素是否实际可见。

另一种选择(看起来确实发生了)是 jquery 表达式:

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

没有返回任何元素。

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

display 不能等于 none

可见性必须等于可见

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

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

【讨论】:

  • 如何检查元素是否实际可见?我应该如何前进?
  • 看起来你可能是对的,当我评估函数时,我得到了这个......未捕获的 ReferenceError:mainNavigationOffset 未定义(......)(匿名函数)@ VM95:1
  • 我添加了几个屏幕截图来展示如何在 chrome 开发工具中检查可见性。
  • 应该为您要检查的元素打开该视图。
  • 显示等于块,我根本看不到可见性。我附上屏幕截图。
【解决方案2】:

试试这个,jQuery doc

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

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

link

【讨论】:

    【解决方案3】:

    检查您的 jQuery 版本是否最高为 1.2,.offset() 方法可能不适用于旧版本。

    jQuery 1.2 change log

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 2016-10-28
      • 2017-02-11
      • 2016-01-01
      • 2012-07-04
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多