Hvordan filtrere elementer

Lær hvordan man filtrerer DIV-elementer baseret på klassenavn

Filtrer DIV-elementer

BMW
Appelrød
Volvo
Rød
Ford
Blå
Katt
Hund
Melon
Kiwi
Banane
Lime
Ku
BYD

Prøv det selv

Opret filtrerbare DIV-elementer

Første trin - Tilføj HTML:

<!-- Kontroleknapper -->
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')"> Vis alle</button>
  <button class="btn" onclick="filterSelection('cars')"> Biler</button>
  <button class="btn" onclick="filterSelection('animals')"> Dyr</button>
  <button class="btn" onclick="filterSelection('fruits')"> Frugter</button>
  <button class="btn" onclick="filterSelection('colors')"> Farver</button>
</div>
<!-- Kan filtreres elementer. Bemærk, nogle har flere klassenavne (hvis de tilhører flere kategorier, kan disse navne bruges) -->
<div class="container">
  <div class="filterDiv cars">BMW</div>
  <div class="filterDiv colors fruits">Appelrød</div>
  <div class="filterDiv cars">Volvo</div>
  <div class="filterDiv colors">Rød</div>
  <div class="filterDiv cars">Ford</div>
  <div class="filterDiv colors">Blå</div>
  <div class="filterDiv animals">Katt</div>
  <div class="filterDiv animals">Hund</div>
  <div class="filterDiv fruits">Melon</div>
  <div class="filterDiv fruits animals">Ananas</div>
  <div class="filterDiv fruits">Banane</div>
  <div class="filterDiv fruits">Lime</div>
  <div class="filterDiv animals">Ku</div>
</div>

Andet trin - Tilføj CSS:

.container {
  overskydende: skjult;
}
.filterDiv {
  flydende: venstre;
  baggrundsfarve: #2196F3;
  farve: #ffffff;
  bredde: 100px;
  linjehøjde: 100px;
  tekstjustering: center;
  marginal: 2px;
  vis: ingen; /* Standard skjult */
}
/* Tilføj "show" klasse til filtrerede elementer */
.show {
  vis: blok;
}
/* Indstil stilen for knapper */
.btn {
  kanter: ingen;
  kantlinje: ingen;
  marginal: 12px 16px;
  baggrundsfarve: #f1f1f1;
  markør: pegefinger;
}
/* Tilføj lys grå baggrund ved museoverførsel */
.btn:hover {
  baggrundsfarve: #ddd;
}
/* Tilføj mørk baggrund til aktiv knap */
.btn.active {
  baggrundsfarve: #666;
  farve: hvid;
}

Tredje trin - Tilføj JavaScript:

filterSelection("all")
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("filterDiv");
  if (c == "all") c = "
  // Tilføj "show"-klassen (display:block) til de filtrerede elementer og fjern "show"-klassen fra de ikke valgte elementer
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// Vis filtrerede elementer
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];
    }
  }
}
// Skjul de ikke valgte elementer
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(" ");
}
// Tilføj aktiv klasse til det aktuelle kontrolknappen (gør det fremhævet)
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";
  });
}

Prøv det selv