Miten lisätä active-luokka nykyiselle elementille

Opi, miten JavaScriptillä lisätään active-luokka nykyiselle elementille.

Korosta aktiivista/skyttä (paineinen) painiketta:

Try it yourself

Aktiivinen elementti

Vaihe 1 - Lisää HTML:

<div id="myDIV">
  <button class="btn">1</button>
  <button class="btn active">2</button>
  <button class="btn">3</button>
  <button class="btn">4</button>
  <button class="btn">5</button>
</div>

Vaihe 2 - Lisää CSS:

/* Aseta painikkeen tyylit */
.btn {
  border: none;
  outline: none;
  padding: 10px 16px;
  background-color: #f1f1f1;
  cursor: pointer;
}
/* Aseta tyylit active-luokalle (ja hiiren osoittimen yllä oleville painikkeille) */
.active, .btn:hover {
  background-color: #666;
  color: white;
}

Vaihe 3 - Lisää JavaScript:

// Hae konttein elementti
var btnContainer = document.getElementById("myDIV");
// Hae kaikkia class="btn" sisältäviä painikkeita konteista
var btns = btnContainer.getElementsByClassName("btn");
// Käy läpi painikkeet ja lisää active-luokka nykyiseen/klikattuun painikkeeseen
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

Jos painike-elementti ei aluksi ole asettanut active-luokkaa, käytä seuraavaa koodia:

// Hae konttein elementti
var btnContainer = document.getElementById("myDIV");
// Hae kaikkia class="btn" sisältäviä painikkeita konteista
var btns = btnContainer.getElementsByClassName("btn");
// Käy läpi painikkeet ja lisää active-luokka nykyiseen/klikattuun painikkeeseen
for (var i = 0; i < btns.length; i++) {
  btns[i].addEventListener("click", function() {
    var current = document.getElementsByClassName("active");
    // Jos ei ole active-luokkaa
    if (current.length > 0) {
      current[0].className = current[0].className.replace(" active", "");
    }
    // Lisää active-luokka nykyiseen/klikattuun painikkeeseen
    this.className += " active";
  });
}

Try it yourself