Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <style>
- label{
- display:block;
- }
- </style>
- </head>
- <body>
- <label for="filter-a-input">Cast of Star Wars:</label>
- <input list="filter-a" name="filter-a-input" id="filter-a-input" class="filterDataList" data-filter=".tr-filter-a" data-display="table-row" data-source="filter-a">
- <datalist id="filter-a" class="dataFilter">
- <option value="Mark Hamill">
- <option value="Harrison Ford">
- <option value="Carrie Fisher">
- <option value="Peter Cushing">
- <option value="Alec Guinness">
- <option value="Anthony Daniels">
- <option value="Kenny Baker">
- <option value="Peter Mayhew">
- <option value="David Prowse">
- <option value="Phil Brown">
- <option value="R2-D2">
- <option value="C3P0">
- </datalist>
- <table>
- <tr class="mark-hamill tr-filter-a"><td>Mark Hamill</td></tr>
- <tr class="harrison-ford tr-filter-a"><td>Harrison Ford</td></tr>
- <tr class="carrie-fisher tr-filter-a"><td>Carrie Fisher</td></tr>
- <tr class="peter-cushing tr-filter-a"><td>Peter Cushing</td></tr>
- <tr class="alec-guinness tr-filter-a"><td>Alec Guinness</td></tr>
- <tr class="anthony-daniels tr-filter-a"><td>Anthony Daniels</td></tr>
- <tr class="kenny-baker tr-filter-a"><td>Kenny Baker</td></tr>
- <tr class="peter-mayhew tr-filter-a"><td>Peter Mayhew</td></tr>
- <tr class="david-prowse tr-filter-a"><td>David Prowse</td></tr>
- <tr class="phil-brown tr-filter-a"><td>Phil Brown</td></tr>
- <tr class="r2-d2 tr-filter-a"><td>R2-D2</td></tr>
- <tr class="c3p0 tr-filter-a"><td>C3P0</td></tr>
- </table>
- <script>
- var filterClassList = [];
- var filterInputList = document.querySelectorAll(".filterDataList");
- for(var i = 0; i < filterInputList.length; i++) {
- filterInputList[i].addEventListener('input', inputFilterChange);
- }
- function inputFilterChange(event){
- var thisId = event.target.id;
- var thisValue = event.target.value;
- var thisFilterClass = event.target.getAttribute('data-filter'); // tr-filter-a
- var thisDisplayType = event.target.getAttribute('data-display'); // table-row
- var thisDataArraySrc = event.target.getAttribute('data-source'); // filter-a
- setFilterArray(thisDataArraySrc);
- console.log(thisId + " : " + thisValue + " : " + thisFilterClass );
- showFilterChange(thisValue, thisFilterClass, thisDisplayType );
- }
- function setFilterArray(id){
- filterClassList = [];
- var dataNodesList = document.getElementById(id).childNodes;
- console.log("setFilterArray:" + dataNodesList)
- for (i = 0; i < dataNodesList.length; i++) {
- var thisValue = dataNodesList[i].value;
- var thisString = String(thisValue);
- var thisFilter = thisString.toLowerCase().replace(/ /g,"-");
- if(thisFilter != "undefined"){
- filterClassList.push(thisFilter);
- }
- } // end loop
- }
- // showFilterChange(Mark, tr-filter-a, table-row)
- function showFilterChange(val, fltrclass, dsply){
- var filterTargetList = [];
- var thisTargetValue = val.toLowerCase().replace(/ /g,"-");
- // MAKE ARRAY LIST OF CLASSES TO SHOW...
- for (i = 0; i < filterClassList.length; i++) {
- var thisSrc = filterClassList[i];
- hasString = thisSrc.includes(thisTargetValue);
- if(hasString == true){
- filterTargetList.push(filterClassList[i])
- }
- } // end for
- // HIDE ALL CLASSES IN GROUP
- if(filterTargetList.length > 0){
- // HIDE CLASS GROUP
- hideClassGroup = fltrclass; //.tr-filter-a
- var hideList = document.querySelectorAll(hideClassGroup);
- for(var i = 0; i < hideList.length; i++) {
- hideList[i].style.display = "none";
- }
- // SHOW TARGET CLASS
- // https://www.w3schools.com/jsref/met_document_getelementsbyclassname.asp
- for(var i = 0; i < filterTargetList.length; i++) {
- showTarget = document.getElementsByClassName(filterTargetList[i]);
- for (j = 0; j < showTarget.length; j++) {
- showTarget[j].style.display = dsply ;
- }// end for j
- } // end for i
- } // end if > 0
- } // showFilterChange()
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement