簡體   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