테이블 필터링/검색 방법
JavaScript를 사용하여 필터 가능한 테이블을 만드는 방법을 배우세요.
테이블 필터링
JavaScript를 사용하여 테이블에서 특정 데이터를 검색하는 방법.
Name | Country |
---|---|
Alfreds Futterkiste | Germany |
Berglunds snabbkop | 스웨덴 |
Island Trading | UK |
Koniglich Essen | Germany |
Laughing Bacchus Winecellars | Canada |
Magazzini Alimentari Riuniti | Italy |
North/South | UK |
Paris specialites | France |
필터 가능한 테이블 생성
第一步 - HTML 추가:
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Names을 검색하세요.."> <table id="myTable"> <tr class="header"> <th style="width:60%;">Name</th> <th style="width:40%;">Country</th> </tr> <tr> <td>Alfreds Futterkiste</td> <td>Germany</td> </tr> <tr> <td>Berglunds snabbkop</td> <td>Sweden</td> </tr> <tr> <td>Island Trading</td> <td>UK</td> </tr> <tr> <td>Koniglich Essen</td> <td>Germany</td> </tr> </table>
第二步 - 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; }
세 번째 단계 - 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]。
相关页面
教程:如何过滤/搜索列表