javascript - 复选框未通过 JavaScript 检查

标签 javascript html jquery css web


我正在做一个元素,出现了一些情况:

  • 默认情况下会选中选项C 当有人选中选项A并且 optionB 然后 optionC 应该取消选中 当有人选中 optionC 时 取消选中后,选项B应该取消选中当有人检查时

取消选中选项B后,应取消选中选项A——仅此而已! 这是我的代码:

var optionA = document.getElementById("optionA");
var optionB = document.getElementById("optionB");
var optionC = document.getElementById("optionC");
optionC.checked = true;
[ optionA, optionB, optionC ].forEach(function(option) {
   option.addEventListener("click", function() {
      if(optionA.checked && optionB.checked){
        optionC.checked = false;
      }
     else if(optionA.checked && optionB.checked && optionC.checked){
       optionB.checked = false;
     }
       //Here also Code is missing
     else{
  optionC.checked = true;
     }
   });
});
<div>
  <input type="checkbox" id="optionA" name="optionA" />
  <label for="optionA">Option A</label>
  <input type="checkbox" id="optionB" name="optionB" />
  <label for="optionB">Option B</label>
  <input type="checkbox" id="optionC" name="optionC" />
  <label for="optionC">Option C</label>
</div>

但是我遇到了一个错误,在取消选中 optionC 后,用户无法再次检查它

最佳答案

您的代码是错误的,因为您还应该引用 checkbox 触发点击事件的数据,我使用 e.target 修复了代码检查谁触发了事件

var optionA = document.getElementById("optionA");
var optionB = document.getElementById("optionB");
var optionC = document.getElementById("optionC");
optionC.checked = true;
[ optionA, optionB, optionC ].forEach(function(option) {
   option.addEventListener("click", function(e) {
      const elem = e.target;
      if(elem == optionB) {
          if(optionC.checked)
            optionA.checked = false;
      }
      if(elem == optionA) {
          if(optionB.checked)
            optionC.checked = false;
      }
      if(elem == optionC) {
          if(optionA.checked)
            optionB.checked = false;
      }
   });
});
<div>
     A
     <input type="checkbox" id="optionA" />
</div>
<div>
     B
     <input type="checkbox" id="optionB" />
</div>
<div>
    C
    <input type="checkbox" id="optionC" />
</div>

关于javascript - 复选框未通过 JavaScript 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74139422/

相关文章:

javascript - 在 openlayers 4 中使用外部超链接正确显示弹出窗口

javascript 检查是否是字典

javascript - Angularjs 隐藏 显示 干净的编码

javascript - 链接iframe内外两个div的位置

javascript - 选择选项时启用选择,将禁用设置为 false 不起作用

javascript - 如何将 <select> 元素合并到 Bootstrap 下拉列表中?

javascript - 如何将 json 数据传递给 meteor 模板

ios - iPad 2 Safari 显示像素化的 html 文本和图像

jquery - 任何 slider 宽度与页面滚动条故障?

javascript - 删除滚动条上的链接