如何清除下拉框中的所有选项?

时间:2010-07-29 15:57:47

标签: javascript html-select

我的代码在IE中运行,但在Safari,Firefox和Opera中断。 (大惊喜)

document.getElementById("DropList").options.length=0;

经过搜索,我发现它不是length=0。它 我尝试了...options=nullvar clear=0; ...length=clear,结果相同。

我一次对多个对象这样做,所以我正在寻找一些轻量级的JS代码。

27 个答案:

答案 0 :(得分:249)

要删除select html对象的选项,您可以使用以下代码:

function removeOptions(selectbox)
{
    var i;
    for(i = selectbox.options.length - 1 ; i >= 0 ; i--)
    {
        selectbox.remove(i);
    }
}
//using the function:
removeOptions(document.getElementById("mySelectObject"));

这适用于所有浏览器。 =)

答案 1 :(得分:98)

如果您希望拥有一个轻量级脚本,那么请转到jQuery。 在jQuery中,删除所有选项的解决方案将如下:

$("#droplist").empty();

答案 2 :(得分:84)

可能不是最干净的解决方案,但它绝对比逐个删除更简单:

document.getElementById("DropList").innerHTML = "";

答案 3 :(得分:62)

这是最好的方式:

function (comboBox) {
    while (comboBox.options.length > 0) {                
        comboBox.remove(0);
    }        
}

答案 4 :(得分:25)

您可以使用以下内容清除所有元素。注意

var select = document.getElementById("DropList");
var length = select.options.length;
for (i = 0; i < length; i++) {
  select.options[i] = null;
}

答案 5 :(得分:22)

这是最短的方式:

document.getElementById('mySelect').innerText = null

一行,没有,没有JQuery,简单。

答案 6 :(得分:14)

function removeOptions(obj) {
    while (obj.options.length) {
        obj.remove(0);
    }
}

答案 7 :(得分:7)

这是一个有点现代和纯粹的JavaScript

document.querySelectorAll('#selectId option').forEach(option => option.remove())

答案 8 :(得分:6)

尝试

document.getElementsByTagName("Option").length=0

或者查看removeChild()函数。

或者如果您使用jQuery框架。

$("DropList Option").each(function(){$(this).remove();});

答案 9 :(得分:6)

请注意,选择可以同时具有两个 - optgroup&amp;
- 选项收集
 作为它的孩子。

所以,

方法#1

var selectElement = document.getElementById('myselectid');
selectElement.innerHTML = '';

方法#2

var selectElement = document.getElementById('myselectid');
selectElement.textContent = '';

我测试过,都在Chrome上工作 我喜欢简单的,老式的方法#1。

答案 10 :(得分:6)

PrototypeJS

$('yourSelect').select('option').invoke('remove');

答案 11 :(得分:6)

如果您使用的是JQuery,并且您的选择控件具有ID&#34; DropList&#34;您可以这样删除其选项:

$('#DropList option').remove();

实际上它适用于我的任何选项列表,比如datalist。

希望它有所帮助。

答案 12 :(得分:4)

这可用于清除选项:

function clearDropDown(){
  var select = document.getElementById("DropList"),
      length = select.options.length;
  while(length--){
    select.remove(length);
  }
}
<select id="DropList" >
  <option>option_1</option>
  <option>option_2</option>
  <option>option_3</option>
  <option>option_4</option>
  <option>option_5</option>
</select>
<button onclick="clearDropDown()">clear list</button>

答案 13 :(得分:4)

使用JQuery是一个更漂亮,更短的&amp;更聪明的方法!

$('#selection_box_id').empty();

答案 14 :(得分:3)

反过来。原因是每次移除后尺寸减小。

for (i = (len-1); i > -1; i--) {
    document.getElementById("elementId").remove(i);
}

答案 15 :(得分:2)

我认为这是最好的解决方案。是

 $("#myselectid").html(''); 

答案 16 :(得分:2)

最简单的解决方案是最好的,所以你只需要:

&#13;
&#13;
var list = document.getElementById('list');
while (list.firstChild) {
    list.removeChild(list.firstChild);
}
&#13;
<select id="list">
  <option value="0">0</option>
  <option value="1">1</option>
</select>
&#13;
&#13;
&#13;

答案 17 :(得分:2)

应该反向删除这些项目,否则会导致错误。此外,我不建议只将值设置为null,因为这可能会导致意外行为。

var select = document.getElementById("myselect");
for (var i = select.options.length - 1 ; i >= 0 ; i--)
    select.remove(i);

或者,如果您愿意,可以使其成为一种功能:

function clearOptions(id)
{
    var select = document.getElementById(id);
    for (var i = select.options.length - 1 ; i >= 0 ; i--)
        select.remove(i);
}
clearOptions("myselect");

答案 18 :(得分:1)

以上答案的代码需要略微更改才能删除完整列表,请检查此段代码。

var select = document.getElementById("DropList");
var length = select.options.length;
for (i = 0; i < length;) {
  select.options[i] = null;
  length = select.options.length;
}

刷新长度,它将从下拉列表中删除所有数据。 希望这会对某人有所帮助。

答案 19 :(得分:1)

var select = document.getElementById('/*id attribute of your select here*/');
for (var option in select){
    select.remove(option);
}

答案 20 :(得分:1)

我想指出的是,原来的问题已经不再与今天有关。而且该解决方案的版本更短:

selectElement.length = 0;

我已经测试了这两个版本在Firefox 52,Chrome 49,Opera 36,Safari 5.1,IE 11,Edge 18,Android上最新版本的Chrome,Firefox,三星Internet和UC浏览器,iPhone 6S上的Safari, Android 4.2.2股票浏览器。我认为可以断定它与目前存在的任何设备绝对兼容,因此,我建议采用这种方法。

答案 21 :(得分:1)

var select = document.getElementById("DropList");
var length = select.options.length;
for (i = 0; i < length; i++) {
  select.options[i].remove();
}

希望,此代码将为您提供帮助

答案 22 :(得分:0)

如果你必须支持IE,并且你的选择列表中有超过100个项目,我强烈建议你考虑用这样的函数替换select:

function clearOptions(select) {
    var selectParentNode = select.parentNode;
    var newSelect = select.cloneNode(false); // Make a shallow copy
    selectParentNode.replaceChild(newSelect, select);
    return newSelect;
}

select参数应该是来自jquery选择器或document.getElementBy调用的元素。唯一的缺点是你丢失了连接到选择的事件,但是当它从函数返回时你可以很容易地重新连接它们。我正在使用一个具有~3k项目的选项,IE9上需要4秒才能清除选择,因此我可以使用新内容更新它。几乎是这样做的。

答案 23 :(得分:0)

while(document.getElementById("DropList").childNodes.length>0) 
{
    document.getElementById("DropList").removeChild(document.getElementById("DropList").childNodes[0]);
}

答案 24 :(得分:0)

对于Vanilla JavaScript,有一种简单而优雅的方法可以做到这一点:

for(var o of document.querySelectorAll('#DropList > option')) {
  o.remove()
}

答案 25 :(得分:-1)

今天我遇到了同样的问题,我在重新加载选择框时做了如下操作。 (在平原JS中)

        var select = document.getElementById("item");
        select.options.length = 0;
        var opt = document.createElement('option');
        opt.value = 0;
        opt.innerHTML = "Select Item ...";
        opt.selected = "selected";
        select.appendChild(opt);


       for (var key in lands) {
            var opt = document.createElement('option');
            opt.value = lands[key].id;
            opt.innerHTML = lands[key].surveyNo;
            select.appendChild(opt);

        }

答案 26 :(得分:-2)

var select =$('#selectbox').val();