Активные кнопки заменяют img-src внутри текущей активной кнопки и отменяют src, когда не активны

#javascript #java #html #jquery #button

#javascript #java #HTML #jquery #кнопка

Вопрос:

У меня 8 активных кнопок, и я хочу изменить img-src на текущей активной кнопке и отменить src, когда он больше не активен. Я плохо разбираюсь в JS и не могу в этом разобраться.

Все неактивные изображения имеют окончание «_grey.png», а активные должны быть «_blue.png».

HTML:

 <div id="worldfilter">
    <button class="wf-btn active"><img src="world_blue.png"> Welt </button>
    <button class="wf-btn"><img src="europe_grey.png"></button>
    <button class="wf-btn"><img src="north_america_grey.png"></button>
    <button class="wf-btn"><img src="south_america_grey.png"></button>
    <button class="wf-btn"><img src="africa_grey.png"></button>
    <button class="wf-btn"><img src="orient_grey.png"></button>
    <button class="wf-btn"><img src="asia_grey.png"></button>
    <button class="wf-btn"><img src="oceania_grey.png"></button>
  </div>
 

js:

 //Worldfilter button
// Get the container element
var btnContainer = document.getElementById("worldfilter");

// Get all buttons with class="wf-btn" inside the container
var btns = btnContainer.getElementsByClassName("wf-btn");

// Loop through the buttons and add the active class to the current/clicked button
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";
 

Заранее спасибо!!

Ответ №1:

Вы можете сделать так (я прокомментировал код).

 $('.wf-btn').click(function() {
  $('.wf-btn').removeClass('active');  // we remove class for all btn
  $(this).addClass('active');  // we add class to the current btn
  
  // we set all img src btn with _blue.png to _grey.png
  $('.wf-btn').each(function() { 
    var SRCLoop = $(this).find('img').attr('src');
    
    if (SRCLoop.substr(SRCLoop.length-9) == '_blue.png') {
     var newSRCLoop = SRCLoop.replace('_blue.png','');
     $(this).find('img').attr('src', newSRCLoop   '_grey.png');
    }
  });

  var btnSRC = $(this).find('img').attr('src'); // we get the src of the current img btn
  
  // we change src img btn
  if (btnSRC.substr(btnSRC.length-9) != '_blue.png') {
   var newSRC = btnSRC.replace('_grey.png','');
   $(this).find('img').attr('src', newSRC   '_blue.png'); 
  } else {
   var newSRC = btnSRC.replace('_blue.png','');
   $(this).find('img').attr('src', newSRC   '_grey.png');   
  }
}) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="worldfilter">
    <button class="wf-btn active"><img src="world_blue.png"> Welt </button>
    <button class="wf-btn"><img src="europe_grey.png"></button>
    <button class="wf-btn"><img src="north_america_grey.png"></button>
    <button class="wf-btn"><img src="south_america_grey.png"></button>
    <button class="wf-btn"><img src="africa_grey.png"></button>
    <button class="wf-btn"><img src="orient_grey.png"></button>
    <button class="wf-btn"><img src="asia_grey.png"></button>
    <button class="wf-btn"><img src="oceania_grey.png"></button>
  </div> 

Ответ №2:

 <div id="worldfilter">
    <button onclick="make_active(this);" class="wf-btn active"><img src="img/blue.png"> Welt </button>
    <button onclick="make_active(this);" class="wf-btn"><img src="img/grey.png"></button>
    <button onclick="make_active(this);" class="wf-btn"><img src="img/grey.png"></button>
    <button onclick="make_active(this);"class="wf-btn"><img src="img/grey.png"></button>
    <button onclick="make_active(this);"class="wf-btn"><img src="img/grey.png"></button>
    <button onclick="make_active(this);"class="wf-btn"><img src="img/grey.png"></button>
    <button onclick="make_active(this);"class="wf-btn"><img src="img/grey.png"></button>
    <button onclick="make_active(this);" class="wf-btn"><img src="img/grey.png"></button>
  </div>
<style>
    img{
        max-width:50px;
    }
</style>
<script>
function make_active(btn){
    for(var i=0;i<document.getElementsByClassName("wf-btn").length;i  ){
        document.getElementsByClassName("wf-btn")[i].children[0].setAttribute("src","img/grey.png");
        
    }
    btn.children[0].setAttribute("src","img/blue.png");
    
}
</script>