テーブルのフィルタリング/検索方法
- 前のページ リストのフィルタリング
- 次のページ 要素のフィルタリング
JavaScriptを使用してフィルタリング可能なテーブルを作成する方法を学びます。
テーブルのフィルタリング
JavaScriptを使用してテーブル内で特定のデータを検索する方法
Name | Country |
---|---|
Alfreds Futterkiste | ドイツ |
Berglunds snabbkop | スウェーデン |
Island Trading | UK |
Koniglich Essen | ドイツ |
Laughing Bacchus Winecellars | カナダ |
Magazzini Alimentari Riuniti | イタリア |
北/南 | UK |
パリの特別な商品 | フランス |
フィルタリング可能なテーブルを作成
ステップ1 - HTMLを追加:
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="名前を検索"> <table id="myTable"> <tr class="header"> <th style="width:60%;">名前</th> <th style="width:40%;">国</th> </tr> <tr> <td>Alfreds Futterkiste</td> <td>ドイツ</td> </tr> <tr> <td>Berglunds snabbkop</td> <td>スウェーデン</td> </tr> <tr> <td>Island Trading</td> <td>UK</td> </tr> <tr> <td>Koniglich Essen</td> <td>ドイツ</td> </tr> </table>
ステップ2 - CSSを追加:
入力要素とテーブルのスタイルを設定:
#myInput { background-image: url('/css/searchicon.png'); /* 入力ボックスに検索アイコンを追加 */ background-position: 10px 12px; /* 検索アイコンの位置を指定 */ background-repeat: no-repeat; /* アイコン画像を繰り返さない */ width: 100%; /* 全幅 */ font-size: 16px; /* 字体サイズを大きく */ padding: 12px 20px 12px 40px; /* 内側余白を追加 */ border: 1px solid #ddd; /* 灰色边框を追加 */ margin-bottom: 12px; /* 入力ボックスの下にスペースを追加 */ } #myTable { border-collapse: collapse; /* 架線を統合 */ width: 100%; /* 全幅 */ border: 1px solid #ddd; /* 灰色边框を追加 */ font-size: 18px; /* 文字サイズを大きくする */ } #myTable th, #myTable td { text-align: left; /* テキストを左寄せにする */ padding: 12px; /* 内側余白を追加 */ } #myTable tr { /* 全てのテーブル行に下部の枠線を追加 */ border-bottom: 1px solid #ddd; } #myTable tr.header, #myTable tr:hover { /* テーブルのヘッダーとマウスオーバー時の灰色の背景色を追加 */ background-color: #f1f1f1; }
第3ステップ - JavaScriptを追加:
<script> function myFunction() { // 変数の宣言 var input, filter, table, tr, td, i, txtValue; input = document.getElementById("myInput"); filter = input.value.toUpperCase(); table = document.getElementById("myTable"); tr = table.getElementsByTagName("tr"); // 全てのテーブル行をループし、検索クエリに一致しない行を非表示にします for (i = 0; i < tr.length; i++) { td = tr[i].getElementsByTagName("td")[0]; if (td) { txtValue = td.textContent || td.innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { tr[i].style.display = ""; } else { tr[i].style.display = "none"; } } } } </script>
ヒント:大文字小文字を区別する検索を行いたい場合は、 toUpperCase()
。
ヒント:国(インデックス 1)ではなく「名称」(インデックス 0)を検索する場合は、 tr[i].getElementsByTagName('td')[0]
を[1]に変更する
関連ページ
チュートリアル:リストのフィルタリング/検索を実現する方法
- 前のページ リストのフィルタリング
- 次のページ 要素のフィルタリング