2017-05-03 12 views
2

3つの列を持つ表を作成しています。最初の列は顧客名です。次に、3列目の表の視認性をトリガーするボタン、3列目はユーザーを含む表電話履歴。HTMLテーブルの子フィルタ

私は、最初の列のフィルタを作成して、2番目の表の表示を切り替えます。しかし、フィルタリングとトグルを同時に行うと、2番目のテーブルの行は表示されません。

HERE私のコードの例を見ることができます。

HTMLの基本コード:

<table id='table1'> 
    <tr> 
    <th>titulo1</th> 
    <th>titulo2</th> 
    </tr> 
    <tr> 
    <td>texto1</td> 
    <td> 
     <table id='table2'> 
     <tr> 
      <th>titulo1</th> 
      <th>titulo2</th> 
     </tr> 
     <tr> 
      <th>data1</th> 
      <th>data2</th> 
     </tr> 
     </table> 
    </td> 
    </tr> 
</table> 

JSコード:

function filtrar() { 
     var input, filter, table, tr, td, i; 
     input = document.getElementById("myFIlterInput"); 
     filter = input.value.toUpperCase(); 
     table = document.getElementById("table1"); 
     tr = table.getElementsByTagName("tr"); 
     for (i = 0; i < tr.length; i++) { 
     td = tr[i].getElementsByTagName("td")[0]; 
     if (td) { 
      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) { 
      tr[i].style.display = ""; 
      } else { 
      tr[i].style.display = "none"; 
      } 
     } 
     } 
    } 
+0

HTMLには#myFIlterInputはありません。また、イベントはなく、トグル動作には少なくとも「クリック」イベントが含まれます。 – zer00ne

+0

申し訳ありませんが、フィルターを 'filter = 'texto1';と置き換えることができます; –

+0

ボタンはありますか?あなたは最初の列にあるはずのボタンを述べましたか?たぶん、あなたは:1.何を期待するかを述べるべきです。 2.結果としてあなたが実際に得ていることを述べる。 – zer00ne

答えて

0

それは、フィルタリング機能で、tdを隠しサイクルは影響しないだけということが判明し、同じレベルにある人が、父の下にいるすべての人。

私はそれをスキップし、探しています1がいない場合、その親をチェックするための要素を取得した後、第2ライン

td = tr[i].getElementsByTagName("td")[0]; 
if(td.parentElement.parentElement.parentElement.id != 'table1'){continue;} 

を追加しました。

関連する問題