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

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

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

search后,我知道它是不喜欢的length=0
我试过...options=nullvar clear=0; ...length=clear var clear=0; ...length=clear相同的结果。

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

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

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

要删除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")); 

这将在所有浏览器中工作。 =)

如果你想有一个轻量级的脚本,去jQuery。 在jQuery中,删除所有选项的解决scheme将如下所示: $("#droplist").empty();

这是最好的方法:

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

可能,不是最干净的解决scheme,但它肯定比逐个删除更简单:

 document.getElementById("DropList").innerHTML = ""; 
 function removeOptions(obj) { while (obj.options.length) { obj.remove(0); } } 

这是最短的方法:

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

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

PrototypeJS

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

如果您使用的是JQuery,并且您的select控件具有ID“DropList”,则可以通过以下方式删除其选项:

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

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

希望它有帮助。

请注意,一个select可以有两个
– optgroup&
– 选项集合
作为孩子。

所以,

方法#1

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

方法#2

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

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

使用JQuery是一个更漂亮,更短,更聪明的方法来做到这一点!

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

尝试

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

或者查看removeChild()函数。

或者如果你使用jQuery框架。

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

转过去 原因是每次删除后大小都会减less。

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

我认为这是最好的解决办法。 是

  $( “#myselectid”)HTML( '')。 
 var select = document.getElementById('/*id attribute of your select here*/'); for (var option in select){ select.remove(option); } 

以上答案的代码需要稍作修改才能删除完整的列表,请检查这段代码。

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

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

这可以用来清除选项:

 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> 
 while(document.getElementById("DropList").childNodes.length>0) { document.getElementById("DropList").removeChild(document.getElementById("DropList").childNodes[0]); } 

如果您必须支持IE,并且您的select列表中有超过100个项目,我强烈build议您考虑使用如下函数replaceselect项:

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

select参数应该是来自jqueryselect器或document.getElementBy调用的元素。 唯一的缺点就是你失去了连接到select的事件,但是你可以很容易地将它们重新连接起来,因为它是从函数返回的。 我正在使用一个具有〜3k项目的select,并且在IE9上需要4秒才能清除select,所以我可以使用新内容对其进行更新。 几乎立即这样做。

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

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

今天我面临同样的问题,我重新加载select框时如下所示。 (在平原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); } 
 var select =$('#selectbox').val(); 

项目应该反向移除,否则会导致错误。 此外,我不build议简单地将值设置为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"); 

$(“#yourDDL”)。get(0).options.length = 0;