代码之家  ›  专栏  ›  技术社区  ›  SoLoGHoST

删除多个选项时出现问题

  •  6
  • SoLoGHoST  · 技术社区  · 15 年前

    Opera浏览器的JS代码似乎有问题,因为它只删除了在multiple select标记中选择的最后一个option标记,有人能帮我吗。

    以下是用于此的HTML:

    <select id="actions_list" name="layouts" multiple style="height: 128px; width: 300px;">
        <option value="forum">forum</option>
        <option value="collapse">collapse</option>
        <option value="[topic]">[topic]</option>
        <option value="[board]">[board]</option>
    </select>
    

    当然它在一个表单标签中,但是这个表单涉及到更多的代码,下面是相关的信息。

    var action_list = document.getElementById("actions_list");
    var i = action_list.options.length;
    while(i--)
    {
        if (action_list.options[i].selected)
        {
            action_list.remove(i);
        }
    }
    

    谢谢

    4 回复  |  直到 4 年前
        1
  •  11
  •   Mark Byers    15 年前

    使用jQuery最容易做到这一点,但是如果您想使用普通Javascript做到这一点,您可以。

    您遇到的问题是,从Opera的“选项”列表中删除某个项目时,它会取消选择所有选定的项目,因此只删除第一个项目。解决方法是首先记住在删除任何项目之前选择了哪些项目。

    var action_list = document.getElementById("actions_list");
    
    // Remember selected items.
    var is_selected = [];
    for (var i = 0; i < action_list.options.length; ++i)
    {
        is_selected[i] = action_list.options[i].selected;
    }
    
    // Remove selected items.
    i = action_list.options.length;
    while (i--)
    {
        if (is_selected[i])
        {
            action_list.remove(i);
        }
    }
    
        2
  •  5
  •   dzida    15 年前

    jQuery

    $('#actions_list option:selected').remove()
    
        3
  •  0
  •   user2943671    12 年前
    $.each($('[name="alltags"] option:selected'), function( index, value ) {
      $(this).remove();
    });
    

        4
  •  0
  •   Rahul Jain    7 年前

    从“基于条件选择”中删除多个选项:

    while(SelectBox.length > 1){
        if(SelectBox[SelectBox.length -1].text != "YourCondition"){
           SelectBox.remove(SelectBox.length -1);
        }
    }