2016-02-09 10 views
5

これは実際には迷惑なエラーで、このコンソールエラーに関するさまざまな質問があるようです。それは私がクロムを使用してコンソールで作業するためにたくさんのことを与えるものではありません。JavaScriptエラー:未知の型エラー:未定義のプロパティ 'left'を読み取ることができません

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

申し訳ありませんが、私はこの質問につきものではありません。どんな助けでも大歓迎です。ありがとうございました。

+2

'$ nothing.offset()'は 'null'で、そのプロパティにアクセスしようとするとエラーが発生します。多分、問題は '$( 'js-nav-container> ul')'が何も見つけられないということです。 – towerofnix

+0

ヒント:Chromeデバッガを使用して、関数の最初の行にブレークポイントを設定してみてください。次に、各変数の値を調べます。 – sdgluck

+0

mainNavigationOffsetを初期化した後の値は何ですか? – whipdancer

答えて

3

あなたは前の行に返されたオブジェクトからを残しプロパティを読んでいます。失敗した行は次のとおりです。

var mainNavigationPosition = mainNavigationOffset.left; 

エラーは、mainNavigationOffsetが未定義であることを意味します。

mainNavigationOffsetは以下のように設定されているため:

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

jQueryの要素$( 'JS-NAV-コンテナ> 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') 

は、任意の要素を返していません。要素が表示されている場合、あなたはクロームのdevのツールを使用することができます参照し

があってはならない

表示が display should not be equals to none

視認性がなければなりませんnoneに等しいが見える visibility should be equals to visible

に等しいです

またはコンソールで簡単に実行できます。

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

要素が実際に表示されていることを確認するにはどうすればよいですか?私はどのように前進するべきですか? – Singleton

+0

あなたが正しいかもしれないように見えますが、これを取得する関数が評価されます... Uncaught ReferenceError:mainNavigationOffsetが定義されていません(匿名関数)@ VM95:1 – Singleton

+1

チェックする方法を示すためのスクリーンショットをいくつか追加しましたクロム開発ツールの可視性 –

1

jQuery doc

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

、これを試してみてくださいそうしないと、絶対的または相対的に位置を設定する必要があるかもしれません:

link

1

チェックお使いのjQueryのバージョンは1.2、最大である場合。以前のバージョンではoffset()メソッドが機能しない可能性があります。

jQuery 1.2 change log

関連する問題