Bagaimana menyaring elemen

Belajar bagaimana menyaring elemen DIV berdasarkan nama kelas.

Saring elemen DIV

BMW
Jeruk
Volvo
Merah
Ford
Biru
Kucing
Anjing
Melon
Kiwi
Banana
Lemon
Sapi
BYD

Try It Yourself

Buat elemen DIV yang dapat disaring

Langkah pertama - Tambahkan HTML:

<!-- Tombol kontrol -->
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')"> Tampilkan semua</button>
  <button class="btn" onclick="filterSelection('cars')"> Mobil</button>
  <button class="btn" onclick="filterSelection('animals')"> Hewan</button>
  <button class="btn" onclick="filterSelection('fruits')"> Buah</button>
  <button class="btn" onclick="filterSelection('colors')"> Warna</button>
</div>
<!-- Bisa disaring elemen. Perhatikan, beberapa memiliki banyak nama kelas (jika mereka termasuk dalam beberapa kategori, dapat digunakan nama kelas ini) -->
<div class="container">
  <div class="filterDiv cars">BMW</div>
  <div class="filterDiv colors fruits">Jeruk</div>
  <div class="filterDiv cars">Volvo</div>
  <div class="filterDiv colors">Merah</div>
  <div class="filterDiv cars">Ford</div>
  <div class="filterDiv colors">Biru</div>
  <div class="filterDiv animals">Kucing</div>
  <div class="filterDiv animals">Anjing</div>
  <div class="filterDiv fruits">Melon</div>
  <div class="filterDiv fruits animals">Kiwi</div>
  <div class="filterDiv fruits">Pisang</div>
  <div class="filterDiv fruits">Lemon</div>
  <div class="filterDiv animals">Sapi</div>
</div>

Tahap kedua - Tambahkan CSS:

.container {
  Keterbatasan: tak ada;
}
.filterDiv {
  Gelugur: kiri;
  Latar belakang warna: #2196F3;
  Warna: #ffffff;
  Lebar: 100px;
  Garis tinggi: 100px;
  Teks-tengah: tengah;
  Margin: 2px;
  Tampilan: tak ada; /* Default disembunyikan */
}
/* Tambahkan kelas "show" ke elemen yang disaring */
.show {
  Tampilan: blok;
}
/* Atur gaya tombol */
.btn {
  Garis: tak ada;
  Tolak: tak ada;
  Penggaris: 12px 16px;
  Latar belakang warna: #f1f1f1;
  Kursor: pointer;
}
/* Tambahkan latar belakang putih terang saat tetikus bergerak */
.btn:hover {
  Latar belakang warna: #ddd;
}
/* Tambahkan latar belakang abu-abu ke tombol yang aktif */
.btn.active {
  Latar belakang warna: #666;
  Warna: putih;
}

Tahap ketiga - Tambahkan JavaScript:

filterSelection("all")
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("filterDiv");
  if (c == "all") c = "";
  // Tambahkan kelas "show" (display:block) ke elemen yang disaring dan hapus kelas "show" dari elemen yang belum dipilih
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// Tampilkan elemen yang disaring
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];
    }
  }
}
// Sembunyikan elemen yang belum dipilih
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(" ");
}
// Menambahkan kelas aktif (menyediakan tampilan yang berwarna) ke tombol kontrol saat ini
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";
  });
}

Try It Yourself