javascript - 添加 - 删除下拉菜单的选项

标签 javascript html

我正在尝试写入一个函数。当我选中一个复选框时,属于该复选框的项目会出现在下拉菜单中,当我取消选中它时,它会从 dropdpwn 中消失。我可以添加,但当我取消选中复选框时无法删除。这是我的代码。

var items = [
  "#1001#item1#10.5#10#1#direc1#",
  "#1002#item2#20.5#10#2#direc2#",
  "#1003#item3#20.5#10#3#director3#",
];
    function checkboxChange(ev) {
        var count = items.length;
        var select = document.getElementById('formsec');
        for (var i = 0; i < count; i++){
            if (ev.value=="1001" &&ev.checked  ) {
                var item = items[i];
                var currentitem = item.split('#');
                if (currentitem[5]=="1" ) {
                    var opt = document.createElement('option');
                    opt.value = currentitem[1];
                    opt.innerHTML = currentitem[2];
                    select.appendChild(opt);
                } 

HTML

<td>
    Choose the item: </br>          
    <input type="checkbox" id="category1" name="choice" value="1001" onchange="checkboxChange(this)" />Category1<br />
    <input type="checkbox" id="category2" name="choice" value="1002" onchange="checkboxChange(this)" />Category2<br />
    <input type="checkbox" id="category3" name="choice" value="1003" onchange="checkboxChange(this)" />Category3<br />
</td>

最佳答案

使用 querySelectorselect.remove() 的工作示例。

仅适用于类别 1,因为 OP 条件:

  • if (ev.value == "1001")
  • if (currentitem[5] == "1")

var items = [
  "#1001#item1#10.5#10#1#direc1#",
  "#1002#item2#20.5#10#2#direc2#",
  "#1003#item3#20.5#10#3#director3#",
];

function checkboxChange(ev) {
  var count = items.length;
  var select = document.getElementById('formsec');
  for (var i = 0; i < count; i++) {
    if (ev.value == "1001") {
      var item = items[i];
      var currentitem = item.split('#');
      if (currentitem[5] == "1") {
        if (ev.checked) {
          var opt = document.createElement('option');
          opt.value = currentitem[1];
          opt.innerHTML = currentitem[2];
          select.appendChild(opt);
        } else {
          var opt = document.querySelector("option[value='" + currentitem[1] + "']");
          select.remove(opt);
        }
      }
    }
  }
}
<select id="formsec"></select>
<td>
  Choose the item: <br />
  <input type="checkbox" id="category1" name="choice" value="1001" onchange="checkboxChange(this)" /><label for="category1">Category1</label><br />
  <input type="checkbox" id="category2" name="choice" value="1002" onchange="checkboxChange(this)" /><label for="category2">Category2</label><br />
  <input type="checkbox" id="category3" name="choice" value="1003" onchange="checkboxChange(this)" /><label for="category3">Category3</label><br />
</td>

关于javascript - 添加 - 删除下拉菜单的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49856734/

相关文章:

javascript - 将 div 从父 div 扩展到中心视口(viewport)

c++ - 使用 C++ 将 HTML 转换为 XML

JQuery UI 对话框弹出 - 添加一个关于 div 的包装器

php - 为 wordpress 主题添加额外的侧边栏

javascript - 在 Dart 中创建换行符

javascript - 如何从 Meteor 0.8.0 Blaze 中的助手访问模板实例

javascript - 搜索框中的单词建议

javascript - 如果项目已存在,如何更新 localStorage 中的数组对象

javascript - jQuery 鼠标悬停,当 true 时向左或向右动画

javascript - Html/jQuery - 使用多选 jquery ui 下拉列表但无法正常工作