【问题标题】:How to do Button Group selected and change color?如何选择按钮组并更改颜色?
【发布时间】:2021-03-15 02:07:22
【问题描述】:

我需要在 Blazor 项目中设计按钮(我正在使用引导程序)。我在一个 Razor 页面上有 2 个按钮组。每组 3 到 4 个按钮。我想用Javascript来改变颜色按钮,它是onclick功能。

  1. 用户将单击组 1 中的任何按钮(当单击将颜色更改为绿色时)并单击组 2 中的按钮而不取消选择组 1 中的按钮。

  2. onclick 调用需要在这里<div class="btn-group">,因为我的按钮上已经有 onclick<button type="button" class="btn btn-primary" @onclick="() => UpdateTheChart(13)">@Language.T37</button>

我在 CSS 中尝试过:focus,但只能选择 1 个按钮。 这是我的代码,出于测试目的,我取出了 onclick in 按钮。

.btn:hover {
  font-weight: bold;
  color: white;
  /*green*/
  background-color: #85c995;
}
<div class="row">
  <div class="column" style="width:30%">
    <div class="btn-group">
      <button type="button" class="btn btn-primary" style="outline-color:red; ">Sunday</button>
      <button type="button" class="btn btn-primary">Tuesday</button>
      <button type="button" class="btn btn-primary">Friday</button>
    </div>
  </div>
  <div class="column" style="width:70%">
    <div class="btn-group">
      <button type="button" class="btn btn-primary">9 am</button>
      <button type="button" class="btn btn-primary">2 pm</button>
      <button type="button" class="btn btn-primary">5 pm</button>
      <button type="button" class="btn btn-primary">8 pm</button>
    </div>
  </div>
</div>

【问题讨论】:

  • 您在 onclick 事件中遇到了什么问题?
  • @BeshambherChaukhwan 我添加了类似这样的内容$('.btn').click(function(){ if($(this).hasClass('active')){ $(this).removeClass('active') } else { $(this).addClass('active') } });
  • 它不起作用?我觉得很好。将其附加到问题中
  • 是的,不工作。我不知道为什么.... :(

标签: javascript html css


【解决方案1】:

function switch_to_green(el){

  //Check clicked button is on the same group
  if(el.parentElement.getAttribute("data-group") == 1){
  //Get all buttons of group 1
  let g1_buttons = document.querySelectorAll('#group1 .btn');
  for(let i =0; i<g1_buttons.length;i++){
    //Remove green color from unselected buttons
    g1_buttons[i].classList.remove('green');
  }
  }else{
  //Get all buttons of group 2
  let g2_buttons = document.querySelectorAll('#group2 .btn');
  for(let i =0; i<g2_buttons.length;i++){
    //Remove green color from unselected buttons
    g2_buttons[i].classList.remove('green');
  }
  }
  //Add green color to the only selected one
  el.classList.add('green');

}
.btn:hover {
        font-weight: bold;
        color: white;
        /*green*/
        background-color: #85c995;
}
.btn.green{
    color: white;
    /*green*/
    background-color: #85c995;
}
<div class="row">
    <div class="column" style="width:30%">
        <div class="btn-group" id="group1" data-group="1">
            <button type="button" class="btn btn-primary" style="outline-color:red; " onclick="switch_to_green(this)">Sunday</button>
            <button type="button" class="btn btn-primary" onclick="switch_to_green(this)">Tuesday</button>
            <button type="button" class="btn btn-primary" onclick="switch_to_green(this)">Friday</button>
        </div>
    </div>
    <div class="column" style="width:70%">
        <div class="btn-group" id="group2" data-group="2">
            <button type="button" class="btn btn-primary" onclick="switch_to_green(this)">9 am</button>
            <button type="button" class="btn btn-primary" onclick="switch_to_green(this)">2 pm</button>
            <button type="button" class="btn btn-primary" onclick="switch_to_green(this)">5 pm</button>
            <button type="button" class="btn btn-primary" onclick="switch_to_green(this)">8 pm</button>
        </div>
    </div>
</div>

【讨论】:

  • 我可以在不点击按钮的情况下做到这一点吗?因为我已经在按钮中点击了。
  • @Hani 当然,我在这个例子中也使用了 onclick。只需调用switch_to_green 函数并将this 传递给它
  • 我不明白。所以只要把onclick放在这里`
    ` ?
  • @Hani onclick 在按钮本身而不是组中
  • 两组中的每个按钮都可以看到onclick="switch_to_green(this)"
猜你喜欢
相关资源
最近更新 更多
热门标签