2017-01-10 11 views
-1

私は初心者です。私はjavascriptを使用している初心者です。質問があります。ここでの問題は私のネストされたチェックが実際のオブジェクトをプッシュする時点で到達したことがないということですJavascriptのネストされたチェックが機能しません。

$('.tab-content.tab-content-guide tr').each(function() { 
    var data = $(this); 
    var time = data.find('.time').text().trim(); 
    var title = data.find('.showseries').text().trim(); 
    var description = data.find('.series_descr').text().trim(); 

    if (time) { 
     if (title) { 
     if (description) { 
      jsonObj.push({ 
       'time': time, 
       'title': title, 
       'description' : description}); 
     } 
     } 
    } 
}); 

:私はこのようなものですeach方法を使用して、私の変数が実際の値が含まれている場合、オブジェクトを作成しよう。 console.logでデバッグしようとすると、私のループは最初のチェックだけを実行することがわかります。私の入れ子にされた小切手が通過しない理由を誰かが説明できますか?ここで

htmlコードのサンプルです:

<div class="tab-content tab-content-guide"> 
<div role="tabpanel" class="tab-pane active" id="tab_636196032000000000"> 
    <div class="table-responsive"> 
     <table class='table' id="table_tab_636196032000000000"> 
      <tbody id="table_tbody_tab_636196032000000000"> 
       <tr data-index="0"><td> 
        <p class="time"><time>00:15</time></p> 
       </td><td> 
       <a href="/minisites/ola-xekolla/"> 
        <img src="http://i-cdn.ant1.gr/dbd3f95d-68d9-4849-ad49-a62a00865173/logo_542_456_1.jpg?storage=cloud&w=140&h=140&mode=crop&scale=both&anchor=topcenter&quality=91" alt="Serie" /> 
       </a> 
       </td><td> 
       <a href="/minisites/ola-xekolla/"> 
        <h5 class="showseries">Some text title</h5> 
        <p class="series_descr">description text here</p> 
       </a><div class="greenbutton" onclick="javascript:window.open('/live')"><a href="#"> 
+0

'title'が' undefined'ようです。 –

+1

htmlを追加できますか? – Damian

+2

はい、 '.tab-content.tab-content-guide tr 'の内容が – Punit

答えて

1

は、例えば、空の文字列が0

で始まる偽、または特定の文字列で評価され、返すことができる値に注意してください

あなたはjQueryの要素の代わりに、値の存在をテストする場合、あなたはこのように行うことができます:あなたはdifferen値をテストする必要があります

var time = data.find('.time'); 
var title = data.find('.showseries'); 
var description = data.find('.series_descr'); 

if (time.length) { 
    if (title.length) { 
    if (description.length) { 
     jsonObj.push({ 
      'time': time.text().trim(), 
      'title': title.text().trim(), 
      'description' : description.text().trim()}); 
    } 
    } 
} 

さもTLY、私は好きではない詳細な解決策のように:

var time = data.find('.time').text().trim(); 
if(typeof time !== 'undefined'){ 
    //... 
} 

EDIT:あなたがnewbirある場合、私は機能を見つけるために、テキスト、またはので、valuresが返されるデフォルト何であるかを確認するためにも、jqueryのドキュメントをお勧めします、適切な使い方など

+0

あなたは正しいです。私はドキュメントを読む必要があります。私は 'undefined'値が次のチェックを止めることを忘れていました。 – axel

0

実際にネストされたループではありません。それはむしろ入れ子になっています。

あなたのセレクタに何かが得られましたか?

あなたは空のコレクションを取得していないことを確認するためにあなたのコードではconsole.log($('.tab-content.tab-content-guide tr').length)

を入れてみてください(これは通常、私の問題だ、セレクタは空のコレクションを返します)。

長さが0より大きい場合は、テスト変数を調べて、それらが真実であることを確認することをおすすめします。

はconsole.log(真& &時間)

+0

これは本当に答えではなく、コメントです。 – trincot

1

これを実行します。

$(document).ready(function(){ 
 
    var jsonObj = []; 
 

 
    $('.tab-content.tab-content-guide tr').each(function() { 
 
    var data = $(this); 
 
    var time = data.find('.time').text().trim(); 
 
    var title = data.find('.showseries').text().trim(); 
 
    var description = data.find('.series_descr').text().trim(); 
 

 
    if (time) { 
 
     if (title) { 
 
     if (description) { 
 
      jsonObj.push({ 
 
      'time': time, 
 
      'title': title, 
 
      'description' : description}); 
 
      } 
 
     } 
 
     } 
 
    }); 
 

 
    console.log(jsonObj); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="tab-content tab-content-guide"> 
 
<div role="tabpanel" class="tab-pane active" id="tab_636196032000000000"> 
 
    <div class="table-responsive"> 
 
     <table class='table' id="table_tab_636196032000000000"> 
 
      <tbody id="table_tbody_tab_636196032000000000"> 
 
       <tr data-index="0"><td> 
 
        <p class="time"><time>00:15</time></p> 
 
       </td><td> 
 
       <a href="/minisites/ola-xekolla/"> 
 
        <img src="http://i-cdn.ant1.gr/dbd3f95d-68d9-4849-ad49-a62a00865173/logo_542_456_1.jpg?storage=cloud&w=140&h=140&mode=crop&scale=both&anchor=topcenter&quality=91" alt="Serie" /> 
 
       </a> 
 
       </td><td> 
 
       <a href="/minisites/ola-xekolla/"> 
 
        <h5 class="showseries">Some text title</h5> 
 
        <p class="series_descr">description text here</p> 
 
       </a> 
 
        </td></tr> 
 
       </tbody> 
 
      </table> 
 
     </div> 
 
    </div>

関連する問題