如何在css和javascript中做过滤器元素按钮样式?

z9ju0rcb  于 2023-03-24  发布在  Java
关注(0)|答案(1)|浏览(94)

我想有不同的风格时,点击表过滤器按钮的按钮。就像“个人”按钮的风格。

当我点击“团队”,我希望该按钮有相同的风格作为“个人”按钮显示。
这是我的CSS代码。

table{
  border-spacing:0px 0px; 
  width: 100%;
  color:#565454;
  border-collapse:collapse;
}
table th,table tr td{
        border-bottom: 1px solid #d8d8d8;
        border-left: 1px solid #d8d8d8;
        border-right: 1px solid #d8d8d8;
        height:50px;        
    font-size:20px;
    }
th{
        font-size:20px;
        color:white;
        font-weight:lighter;
    }
    thead{
        background:var(--darkgreen);
        height:50px;
    }
td:nth-child(2){
        text-align:center;
        padding:0 10px;
        font-size:20px;
    }
    td:nth-child(3){
        text-align:center;
        padding:0 10px;
        font-size:20px;
    }
    td:nth-child(3){
        
        font-size:20px;
    }
  tbody td{
    color:var(--black);
    text-align:center;
    height:50px;
  }
  .btn{
    background-color:lightgray;
    border:none;
    color:var(--black);
    font-size:16px;
    padding:0 1em;
    margin:1em 0.5em
  }

.btn.active{
    background-color:white;
    border: orange 1px solid;

}

这是我的coldfusion代码。
x一个一个一个一个x一个一个二个x
下面是我从W3school复制的JavaScript代码。

filterSelection("Individual")
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("filterDiv");
  if (c == "Individual") c = "";
  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";
  });
}
lndjwyie

lndjwyie1#

尝试以下方法:
向HTML中的按钮添加一个data属性,该属性在onclick函数中引用

<div id="myBtnContainer">
  <button class="btn active" data-index='1' onClick="filterSelection('Individual',1)">Individual</button>
  <button class="btn" data-index='2' onClick="filterSelection('Team',2)">Team</button>
  <button class="btn" data-index='3' onClick="filterSelection('Community',3)">Community</button>
  <button class="btn" data-index='4' onClick="filterSelection('Organization',4)">Organization</button>
</div>

这个JS函数将导致按钮的状态在单击时切换,然后由您添加功能来执行必要的操作。

function toggleActiveState(c, index) {
  const element = document.querySelector(".btn[data-index='"+index+"']")
  element.classList.toggle("active");
}

如果使用上述函数,则似乎不需要这段代码,因为它会干扰按钮状态。

// 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";
//   });
// }

相关问题