Miten suodattaa elementtejä
Opi, kuinka suodattaa DIV-elementtejä luokkien perusteella.
Suodata DIV-elementit
BMW
Oranssi
Volvo
Punainen
Ford
Sininen
Kissa
Koira
Vehnä
Kivisalaatti
Banaani
Limetti
Lehmä
BYD
Luo suodattavat DIV-elementit
Vaihe 1 - Lisää HTML:
<!-- Kontrollipainikkeet --> <div id="myBtnContainer"> <button class="btn active" onclick="filterSelection('all')"> Näytä kaikki</button> <button class="btn" onclick="filterSelection('cars')"> Autoja</button> <button class="btn" onclick="filterSelection('animals')"> Eläimet</button> <button class="btn" onclick="filterSelection('fruits')"> Hedelmät</button> <button class="btn" onclick="filterSelection('colors')"> Värit</button> </div> <!-- Voit suodattaa elementtejä. Huomaa, että jotkut elementit voivat olla useissa luokissa (jos ne kuuluvat useisiin luokkoihin, voit käyttää näitä luokkia) --> <div class="container"> <div class="filterDiv cars">BMW</div> <div class="filterDiv colors fruits">Oranssi</div> <div class="filterDiv cars">Volvo</div> <div class="filterDiv colors">Punainen</div> <div class="filterDiv cars">Ford</div> <div class="filterDiv colors">Sininen</div> <div class="filterDiv eläimet">Kissa</div> <div class="filterDiv eläimet">Koira</div> <div class="filterDiv hedelmät">Ananas</div> <div class="filterDiv hedelmät eläimet">Kookosapeli</div> <div class="filterDiv hedelmät">Banaani</div> <div class="filterDiv hedelmät">Lemoni</div> <div class="filterDiv eläimet">Lehmä</div> </div>
Toinen vaihe - lisää CSS:
.container { ylipääsy: piilotettu; } .filterDiv { liukua: vasen; taustaväri: #2196F3; väri: #ffffff; leveys: 100px; rivinvaihto: 100px; tekstiasento: keskellä; margin: 2px; näyttö: ei näkyvissä; /* Oletuksena piilotettu */ } /* Lisää suodetulle elementille "show"-luokan */ .show { näyttö: blokki; } /* Aseta painikkeen tyyli */ .btn { reuna: ei mitään; reuna: ei mitään; tuoda: 12px 16px; taustaväri: #f1f1f1; kursori: sormi; } /* Lisää hiiren osoitettuun painikkeeseen vaaleanharmaan taustaväri */ .btn:hover { taustaväri: #ddd; } /* Lisää aktiiviseen painikkeeseen tumma taustaväri */ .btn.active { taustaväri: #666; väri: valkoinen; }
Kolmas vaihe - lisää JavaScript:
filterSelection("all") function filterSelection(c) { var x, i; x = document.getElementsByClassName("filterDiv"); if (c == "all") c = ""; // Lisää "show"-luokka suodatetuille elementeille (näytä: display:block) ja poista "show"-luokka valitsemattomilta elementeiltä for (i = 0; i < x.length; i++) { w3RemoveClass(x[i], "show"); if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show"); } } // Näytä suodetut elementit function w3AddClass(element, name) { var i, arr1, arr2; arr1 = element.className.split(" "); arr2 = name.split(" "); for (i = 0; i < arr2.length; i++) { if (arr1.indexOf(arr2[i]) == -1) { element.className += " " + arr2[i]; } } } // Piilota valitsemattomat elementit function w3RemoveClass(element, name) { var i, arr1, arr2; arr1 = element.className.split(" "); arr2 = name.split(" "); for (i = 0; i < arr2.length; i++) { while (arr1.indexOf(arr2[i]) > -1) { arr1.splice(arr1.indexOf(arr2[i]), 1); } } element.className = arr1.join(" "); } // Lisää aktiivinen luokka nykyiselle ohjausnapille (korosta sitä) var btnContainer = document.getElementById("myBtnContainer"); var btns = btnContainer.getElementsByClassName("btn"); for (var i = 0; i < btns.length; i++) { btns[i].addEventListener("click", function() { var current = document.getElementsByClassName("active"); current[0].className = current[0].className.replace(" active", ""); this.className += " active"; }); }