2017-04-25 38 views
-1

これまで何度も尋ねられてきましたが、私は初心者であり、学ぶことが非常に鋭いので、私に。現在利用可能な回答を使用して、この特定のエラーの解決方法を解決することもできませんでした。Uncaught TypeError:未定義のプロパティ 'split'を読み取ることができません - レッスンを希望します

イメージギャラリータイトルの下に表示される画像ギャラリーは表示されず、エラーは次のとおりです。

Uncaught TypeError: Cannot read property 'split' of undefined 
at HTMLAnchorElement.<anonymous> (scripts.js:1604) 
at Function.each (jquery.js:2) 
at a.fn.init.each (jquery.js:2) 
at markScrollToTargets (scripts.js:1602) 
at HTMLDocument.<anonymous> (scripts.js:1552) 
at i (jquery.js:2) 
at Object.fireWith [as resolveWith] (jquery.js:2) 
at Function.ready (jquery.js:2) 
at HTMLDocument.K (jquery.js:2) 

誰かにこれを修正する方法を教えてもらえますか?そして、なぜそれが起こったのですか?あなたが存在していない何か(定義されていません)に.split()を呼び出そうとしている

function markScrollToTargets() { 

     var scrollToSelector = '#'; 
     var $aTags = $('nav a'); // get all level anchor tags 
     var url = window.location.href; 
     var urlSplitArray = url.split(scrollToSelector); 
     url = urlSplitArray[0]; 
     var $target; 

     $aTags.each(function (index) { 
      var $this = $(this); 
      var splitArray = $this.attr('href').split(scrollToSelector); 
      var thisURL = splitArray[0]; 
      var thisTargetClass = splitArray[1]; 

      if (typeof thisTargetClass != "undefined") { // check if link has a scrollto selector 
       if (thisTargetClass != "") { // check if link has scrollto selector but no actual target class (like just #-link) 
        if (thisURL != "") { // if link has url before scrollto selector 
         if (thisURL == url) { // only consider if the link url is the same as current url 
          $("." + thisTargetClass).addClass('scroll-to-target').addClass('scroll-to-target-class-' + thisTargetClass); 
         } 
        } else { 
         $("." + thisTargetClass).addClass('scroll-to-target').addClass('scroll-to-target-class-' + thisTargetClass); 
        } 
       } 
      } 

     }); 
    } 
+0

あなたのコードを表示できるでしょうか?それがなければ、この質問に答えることはほとんど不可能です。 –

+1

'.split'を呼び出す値が' undefined'でないことを確認してください。あなたは正しい値を渡していないか、値が 'undefined'だけである場合、それを守り、' undefined'の場合に何をしたいかを決める必要があります。 –

+0

エラーが含まれていると思われるコードです。私はあなたがスプリットメソッドを使用しようとしているところだと思います。 –

答えて

0

私は、これは、関連するコードであると信じています。デバッグにこのスニペットを実行する場合:

$('nav a').each(function (index) { 
    var $this = $(this); 
    console.log(index, $this, $this.attr('href')); 
    var splitArray = $this.attr('href').split('-'); 
}); 

あなたは第九要素の8 [a, context: a, selector: ""] undefinedを取得します。分割しようとする前に、アンカーにhrefがあるかどうかを確認する必要があります。

+0

これらの応答に感謝します。私はデバッグする方法が分からないので、その答えをどうしたらいいのか、それを使って自分の問題を解決する方法がわからないのではないかと思います。 –

+0

それでは。あなたがペーストしたコードでは、 'var $ aTags = $( 'nav a');を' var $ aTags = $( 'a [href]'をナビゲートする) 'に置き換えてください。 – tipsy

+0

驚くべきこと - ありがとう@Tipsy。 'nav a'を 'nav a [href]'に変更することで明確にする(学習しようとしている)ことは、href値を持つ要素をナビゲートするだけであることを意味しますか? –

関連する問題