javascript - 根据使用 CSS 或 JS 选中的复选框数量隐藏 div

标签 javascript css checkbox

我想根据选中的复选框数隐藏 div。 Div A 在页面加载时可见,而 div B 隐藏。如果选中的复选框总数等于 2 或大于 2,那么我想隐藏 div A 并显示 div B。

 <input class="iput" type="checkbox" name="E33" value="33" stock="20"/> A 
    <input class="iput" type="checkbox" name="E34" value="33" stock="6"/>
    <input class="iput" type="checkbox" name="E646" value="33" stock="7"/>
    <input class="iput" type="checkbox" name="E46" value="33" stock="7"/> 
    <input class="iput" type="checkbox" name="E626" value="33" stock="7"/> 
    <input class="iput" type="checkbox" name="E656" value="33" stock="7"/> 

        <div class="a"> Hello </div>
        <div class="b" style="display:none"> BYE </div>

  Total checked boxes= <span id="result"></span>

一直未能实现这一目标。目前我能够计算复选框的总数,但无法找到一种方法来使用总数来显示和隐藏 div。

      function showChecked(){
        var length = document.querySelectorAll("input:checked").length,
        text = "Total Number of Items Selected = "

    document.getElementById("result").textContent = length;
        document.getElementById("final").value = length;
}
 document.querySelectorAll("input[type=checkbox]").forEach(i=>{
  i.onclick = function(){
  showChecked();
 }
});

最佳答案

为每个复选框添加一个点击事件监听器以递增一个计数器变量,如果计数器大于或等于 2,则将 .a div 的显示属性设置为 none.b div 到 block

如果您给所有复选框都起相同的名称(如“E33”),则可以使用 querySelector 获取所有复选框:

document.querySelectorAll("input[name=E33]");

要获取名称为“E33”的所有选中的复选框,请使用 :checked 选择器:

document.querySelectorAll("input[name=E33]:checked").length;

<input class="iput" type="checkbox" name="E33" value="33" stock="20"/> A 
<input class="iput" type="checkbox" name="E33" value="33" stock="6"/>
<input class="iput" type="checkbox" name="E33" value="33" stock="7"/>
<input class="iput" type="checkbox" name="E33" value="33" stock="7"/> 
<input class="iput" type="checkbox" name="E33" value="33" stock="7"/> 
<input class="iput" type="checkbox" name="E33" value="33" stock="7"/> 

<div class="a" id="a"> Hello </div>
<div class="b" style="display:none" id="b"> BYE </div>
<script>
var a = document.getElementById("a");
var b = document.getElementById('b');
var checked = document.querySelectorAll("input[ name=E33]:checked").length;
var checkboxes = document.querySelectorAll("input[name=E33]");
for(let i = 0; i < checkboxes.length; i++){
  checkboxes[i].addEventListener("click", function(e){
    if(this.checked){
      checked++;
      if(checked>=2){
        a.style.display = "none";
        b.style.display = "block";
      } 
    } else {
       checked--;
      if(checked<2){
        a.style.display = "block";
        b.style.display = "none";
      }
    }
  });
}
</script>

如果你想按类选择你的复选框:

<input class="input" type="checkbox" name="E33" value="33" stock="20"/> A 
<input class="input" type="checkbox" name="E34" value="33" stock="6"/>
<input class="input" type="checkbox" name="E646" value="33" stock="7"/>
<input class="input" type="checkbox" name="E46" value="33" stock="7"/> 
<input class="input" type="checkbox" name="E626" value="33" stock="7"/> 
<input class="input" type="checkbox" name="E656" value="33" stock="7"/> 

    <div class="a" id="a"> Hello </div>
    <div class="b" style="display:none" id="b"> BYE </div>
    <script>
    var a = document.getElementById("a");
    var b = document.getElementById('b');
    var checked = document.querySelectorAll("input.input:checked").length;
    var checkboxes = document.querySelectorAll("input.input");
    for(let i = 0; i < checkboxes.length; i++){
      checkboxes[i].addEventListener("click", function(e){
        if(this.checked){
          checked++;
          if(checked>=2){
            a.style.display = "none";
            b.style.display = "block";
          } 
        } else {
           checked--;
          if(checked<2){
            a.style.display = "block";
            b.style.display = "none";
          }
        }
      });
    }
    </script>

关于javascript - 根据使用 CSS 或 JS 选中的复选框数量隐藏 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51690227/

相关文章:

javascript - Chart.js 属性 'type' 的类型不兼容。类型 'string' 不可分配给类型 '"行” | "bar"| "scatter"

c# - ASP :hyperlink navigation

javascript - 为什么 CssMinimizerWebpackPlugin 会阻止我的主 js 文件被缩小?

javascript - 当使用 Javascript/JQuery 选中该行中的复选框时,从 HTML 表中的特定列获取数据

php - 使用复选框搜索 mysql?

ajax - Wicket:(如何)我可以将 AjaxCheckBox 关联到 CheckGroupSelector?

javascript - i18next-json-sync 使用问题

javascript - 如何实现水平和垂直平滑滚动

javascript - IE7 什么时候重新计算样式?将类添加到正文时不能可靠地工作

javascript - 如果检测到移动用户,如何缩小表格文本?