Изменить цвет кнопки при фильтрации данных - PullRequest
0 голосов
/ 01 ноября 2018

Я потратил много времени на изучение этого вопроса, но, похоже, не могу найти ответ.

Я просто пытаюсь изменить цвет моих кнопок, когда я нажимаю на них. В настоящее время кнопки регистрируются, но не распознают изменение цвета фона. Код проходит и фильтрует данные, следовательно, дополнительная дополнительная функция. Я знаю, что это очень просто, но я не могу определить фон кнопки и изменить его!

CSS:

.button {
      position: relative;
        width: 70px;
        padding: 5px 5px;
        margin-right: 3px;
        margin-bottom: 3px;
        cursor: pointer;
        text-align: center;
        font-size: .65em;
        border: .5px solid #e0e0e0;
        float: left;
        -moz-border-radius: 3px;
        border-radius: 3px;
      background: rgb(255, 255, 255);
    }

    .button:hover {
        background: #e0e0e0;
    }

    .button.current {
        background: #242424;
        color: #fff;
    }

HTML:

<div class="buttons">
    <div a href="#" data-placement="bottom" data-val="1" id="option" name="updateButton" type="button" value="Update" class="button" onclick="buttonClick('b1')">Button 1</div>

    <div a href="#" id="option" class="button" data-val="2" type="button" value="Update" onclick="buttonClick('b2')">Button 2</div>

    <div a href="#" id="option" class="button" data-val="3" type="button" value="Update" onclick="buttonClick('b3')">Button 3</div>

  <div a href="#" id=option class="button" data-val="3" type="button" value="Update" onclick="buttonClick('b4')">Button 4</div>
  </div>

Javascript:

// Shared function
function filterData() {
  var newData = _(site_data).filter(function(site) {
    return site[buildingType] < minYear;
  });
  displaySites(newData);
  return newData.length;
}


function buttonClick(filterField) {
  if (filterField !== undefined) {
    //console.info('Changing building filter to', filterField);
    buildingType = filterField;

  }
  //console.info('Applying filter');
  filterData();

  //click to change color of button background
  var backgroundColor = document.getElementById('option')

  function buttonClick(backgroundColor) {
    if (backgroundColor.onclick == true) {
        option.style.backgroundColor = "#0fe417";
      } else {
        option.style.backgroundColor = "#0029ff";
      }
  }
}

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018
const buttons = [...document.querySelectorAll(".button")];
buttons.forEach(item => {
  item.addEventListener("click", e => {
    console.log(e.target.dataset.val)
    buttons.forEach(item => {
      item.classList.remove("current");
    });
    e.target.classList.add("current");
    filterData(); //and other code...
  });
});

вместо этого используйте e.target.dataset buttonClick ('b2')

0 голосов
/ 01 ноября 2018

Я просто передаю элемент в функцию и меняю цвет фона: [Обновление с сбросом цвета !!]

   <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        
    <script src="http://kithomepage.com/inga/jquery.validate.min.js"></script>
        
    <div class="buttons">
        <div a href="#" data-placement="bottom" data-val="1" id="option" name="updateButton" type="button" value="Update" class="button" onclick="buttonClick('b1',this)">Button 1</div>
    
        <div a href="#" id="option" class="button" data-val="2" type="button" value="Update" onclick="buttonClick('b2',this)">Button 2</div>
    
        <div a href="#" id="option" class="button" data-val="3" type="button" value="Update" onclick="buttonClick('b3',this)">Button 3</div>
    
      <div a href="#" id=option class="button" data-val="3" type="button" value="Update" onclick="buttonClick('b4',this)">Button 4</div>
      </div>
      
      <style> .button {
          position: relative;
            width: 70px;
            padding: 5px 5px;
            margin-right: 3px;
            margin-bottom: 3px;
            cursor: pointer;
            text-align: center;
            font-size: .65em;
            border: .5px solid #e0e0e0;
            float: left;
            -moz-border-radius: 3px;
            border-radius: 3px;
          background: rgb(255, 255, 255);
        }
    
        .button:hover {
            background: #e0e0e0;
        }
    
        .button.current {
            background: #242424;
            color: #fff;
        }
    	</style>
    
      
    <script>
    // Shared function
    function filterData() {
      //just comment for hide a error
      //var newData = _(site_data).filter(function(site) {
      //  return site[buildingType] < minYear;
      //});
      //displaySites(newData);
      //return newData.length;
    }
    
    
    function buttonClick(filterField,element) {
      
      element.style.backgroundColor ="red"
       var backgroundColor = document.getElementById('option');
       buttonClickColor(backgroundColor,element);
      
      if (filterField !== undefined) {
        //console.info('Changing building filter to', filterField);
        buildingType = filterField;
    
      }
      //console.info('Applying filter');
      filterData();
    
      //click to change color of button background
     
    
      function buttonClickColor(backgroundColor,element) {
    	//reset color
    	Array.from(document.getElementsByClassName("button")).forEach(function (button,index){
    		button.style.backgroundColor = "white";
    	})
      
        if (backgroundColor.onclick == true) {
            element.style.backgroundColor = "#0fe417";
          } else {
            element.style.backgroundColor = "#0029ff";
          }
      }
    }
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...