2017-12-07 8 views
2

グリッドをフィルタリングする関数を作成しようとしています。この私が)(onkeyupのイベントフィルタと入力タイプのテキストを使用していますフィルタグリッド:getElementsByTagNameは関数ではありません

<label>Filter:</label><input type="text" id="filterTextBox" onkeyup="Filter()" style="margin-left: 5px; border: 1px solid #cccccc; border-radius: 4px;"/> 

JSの場合 :

function Filter() { 
    // Declare variables 
    var input, filter, table, tr, column, td, i; 
    input = document.getElementById("filterTextBox"); 
    filter = input.value.toUpperCase(); 
    table = document.getElementsByClassName("table"); 
    tr = table.getElementsByTagName("tr"); 
    // column = Document.getElementsByClassName("td-tc"); 

    for (i = 0; i < tr.length; i++) { 
     td = tr[i].getElementsByClassName("td-tc")[0]; 
     if (td) { 
      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) { 
       tr[i].style.display = ""; 
      } else { 
       tr[i].style.display = "none"; 
      } 
     } 
    } 
} 

私はデバッグしようとしてきたが、正直なところ、私はなぜ私は考えていますエラーを取得します。

Uncaught TypeError: table.getElementsByTagName is not a function 

私はここで何が間違っていますか?

GoogleはエラーをGoogleに試しましたが、何が間違っているのかわかりません。

答えて

2

要素コレクションではなく、要素コレクションでTRを検索しようとしました。

まず、table変数を正しく定義します。

table = document.getElementsByClassName("table")[0]; 

以上trは大丈夫です。

tr = table.getElementsByTagName("tr"); 
+0

ありがとうございます!どうすれば私はそれを逃したことができます...私は4分であなたの答えとしてあなたを投票します。 – Falcon

関連する問題