javascript - 单击相应复选框时显示/隐藏下拉菜单

标签 javascript

要求:在选中/取消选中第一个复选框时,我需要显示/隐藏第一个下拉列表,同样在选中/取消选中第二个复选框时,我需要显示/隐藏第二个下拉列表。

请注意,由于复选框的这些值来自数据库,并且我迭代它们以在前端显示。我只能为所有复选框使用通用的 showMe() 函数

问题:当未选中 checkbox1 或使用我编写的逻辑检查 checkbox2 时,我无法完成此工作。有人可以建议一种更好的简洁方法吗?

function showMe (box, box1) {
        
        var chboxs = document.getElementsByName("c1");
        var vis = "none";
        var checkedOne;
        for(var i=0;i<chboxs.length;i++) { 
            if(chboxs[i].checked){
              checkedOne = i;
              alert(checkedOne);
             vis = "block";
                break;
            }
        }
        document.getElementsByName(box)[checkedOne].style.display = vis;
    }
    <input type="checkbox" name="c1" onclick="showMe('catsndogs','parrot')">Checkbox1
    <input type="checkbox" name="c1" onclick="showMe('catsndogs','parrot')">Checkbox2
     <select name="catsndogs" style="display:none">
     <option>Select</option>
	<optgroup label="Cats">
		<option>Tiger</option>
		<option>Leopard</option>
		<option>Lynx</option>
	</optgroup>
	<optgroup label="Dogs">
		<option>Grey Wolf</option>
		<option>Red Fox</option>
		<option>Fennec</option>
	</optgroup>
</select>


    <select name="parrot" style="display:none">
    <option>Select1</option>
	<optgroup label="Bird">
		<option>Tiger</option>
		<option>Leopard</option>
		<option>Lynx</option>
	</optgroup>
</select>

最佳答案

这是否符合您的要求?

function showMe (box, box1) {
  var chkboxes = document.getElementsByName('c1');
  var selects = document.getElementsByTagName('select')
  var bools = []
  for (var i = 0; i < chkboxes.length; i++) {
    if (chkboxes[i].checked) {
      selects[i].style.display = 'block';
    } else {
      selects[i].style.display = 'none';
    }
  }

  
}
<input type="checkbox" name="c1" onclick="showMe('catsndogs','parrot')">Checkbox1
    <input type="checkbox" name="c1" onclick="showMe('catsndogs','parrot')">Checkbox2
     <select name="catsndogs" style="display:none">
     <option>Select</option>
	<optgroup label="Cats">
		<option>Tiger</option>
		<option>Leopard</option>
		<option>Lynx</option>
	</optgroup>
	<optgroup label="Dogs">
		<option>Grey Wolf</option>
		<option>Red Fox</option>
		<option>Fennec</option>
	</optgroup>
</select>


    <select name="parrot" style="display:none">
    <option>Select1</option>
	<optgroup label="Bird">
		<option>Tiger</option>
		<option>Leopard</option>
		<option>Lynx</option>
	</optgroup>
</select>

关于javascript - 单击相应复选框时显示/隐藏下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48108462/

相关文章:

javascript - Chrome 中鼠标悬停时无法播放视频

javascript - 动态修改 HighChart 布局选项

javascript - 如何锁定(或沙箱)JDK 的内置 Javascript 解释器以运行不受信任的脚本

javascript - 为什么在 React Hooks 中排序后数组不更新?

javascript - 查找父div下的div元素的数量

javascript - 普通函数和Marionette.Commands有什么区别

javascript - 如何使用 JavaScript 创建文档对象

javascript - 没有 <a> 标签的正则表达式匹配 url - JS

javascript - jquery.hotkeys.js 用 .bind 替换输入字段

javascript - 从自己的事件访问 Angular $scope