我的代码在IE中运行,但在Safari,Firefox和Opera中断。 (大惊喜)
document.getElementById("DropList").options.length=0;
经过搜索,我发现它不是length=0
。它
我尝试了...options=null
和var clear=0; ...length=clear
,结果相同。
我一次对多个对象这样做,所以我正在寻找一些轻量级的JS代码。
答案 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)
最简单的解决方案是最好的,所以你只需要:
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;
答案 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();