How to filter elements

Learn how to filter DIV elements based on class names.

Filter DIV elements

BMW
Orange
Volvo
Red
Ford
Blue
Cat
Dog
Melon
Kiwi
Banana
Lemon
Cow
BYD

آزمایش کنید

Create filterable DIV elements

Step 1 - Add HTML:

<!-- Control buttons -->
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')"> Show all</button>
  <button class="btn" onclick="filterSelection('cars')"> Cars</button>
  <button class="btn" onclick="filterSelection('animals')"> Animals</button>
  <button class="btn" onclick="filterSelection('fruits')"> Fruits</button>
  <button class="btn" onclick="filterSelection('colors')"> Colors</button>
</div>
<!-- Elements filterable. Please note that some have multiple class names (if they belong to multiple categories, these names can be used) -->
<div class="container">
  <div class="filterDiv cars">BMW</div>
  <div class="filterDiv colors fruits">Orange</div>
  <div class="filterDiv cars">Volvo</div>
  <div class="filterDiv colors">Red</div>
  <div class="filterDiv cars">Ford</div>
  <div class="filterDiv colors">Blue</div>
  <div class="filterDiv animals"> گربه</div>
  <div class="filterDiv animals"> سگ</div>
  <div class="filterDiv fruits"> هندوانه</div>
  <div class="filterDiv fruits animals"> کیوی</div>
  <div class="filterDiv fruits"> موز</div>
  <div class="filterDiv fruits">لیمو</div>
  <div class="filterDiv animals">گاو</div>
</div>

مرحله دوم - اضافه کردن CSS:

.container {
  پرش: مخفی;
}
.filterDiv {
  حرکت: چپ;
  رنگ پس‌زمینه: #2196F3;
  رنگ: #ffffff;
  عرض: 100px;
  ارتفاع خط: 100px;
  جسارت خط: مرکزی;
  حاشیه: 2px;
  نمایش: none; /* به صورت پیش‌فرض مخفی است */
}
/* به عناصر فیلتر شده کلاس "show" اضافه می‌شود */
.show {
  نمایش: block;
}
/* سبک دکمه‌ها را تنظیم می‌کند */
.btn {
  پیرامون: هیچ؛
  کشیدن: هیچ؛
  حاشیه: 12px 16px;
  رنگ پس‌زمینه: #f1f1f1;
  نشانگر: pointer;
}
/* هنگام قرارگیری ماوس بر روی آن پس‌زمینه روشن‌تر می‌شود */
.btn:hover {
  رنگ پس‌زمینه: #ddd;
}
/* به دکمه‌های فعال پس‌زمینه تیره اضافه می‌شود */
.btn.active {
  رنگ پس‌زمینه: #666;
  رنگ: سفید;
}

مرحله سوم - اضافه کردن JavaScript:

filterSelection("all")
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("filterDiv");
  if (c == "all") c = ";";
  // به عناصر فیلتر شده دسته‌بندی "show" (نمایش: block) اضافه می‌شود و از عناصر غیرانتخاب شده دسته‌بندی "show" حذف می‌شود
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// عناصر فیلتر شده را نمایش می‌دهد
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];
    }
  }
}
// عناصر غیرانتخاب شده را مخفی می‌کند
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(" ");
}
// به کنترل‌کننده فعلی دسته‌بندی فعال اضافه می‌شود (نمایش آن روشن می‌شود)
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";
  });
}

آزمایش کنید