我的代码可以在IE中运行,但在Safari、Firefox和Opera中会崩溃。(惊喜)
document.getElementById("DropList").options.length=0;
经过搜索,我了解到它不喜欢的是长度=0。 我试过了……选项=null和var clear=0...长度=clear,结果相同。
我一次对多个对象这样做,所以我正在寻找一些轻量级的JS代码。
我的代码可以在IE中运行,但在Safari、Firefox和Opera中会崩溃。(惊喜)
document.getElementById("DropList").options.length=0;
经过搜索,我了解到它不喜欢的是长度=0。 我试过了……选项=null和var clear=0...长度=clear,结果相同。
我一次对多个对象这样做,所以我正在寻找一些轻量级的JS代码。
当前回答
如果你必须支持IE,并且你的选择列表中有超过100个项目,我强烈建议你考虑用这样的函数替换选择:
function clearOptions(select) {
var selectParentNode = select.parentNode;
var newSelect = select.cloneNode(false); // Make a shallow copy
selectParentNode.replaceChild(newSelect, select);
return newSelect;
}
select参数应该是jquery选择器或文档中的元素。getElementBy电话。这样做的唯一缺点是,您丢失了连接到select的事件,但是当它从函数返回时,您可以轻松地重新附加它们。我正在处理一个有~3k项的选择,在IE9上清除选择需要4秒钟,这样我就可以用新内容更新它。这样做几乎是瞬间的事。
其他回答
注意,一个选择可以同时具有这两种情况 - optgroup & -选项集合 就像它的孩子一样。
So,
方法# 1
var selectElement = document.getElementById('myselectid');
selectElement.innerHTML = '';
方法# 2
var selectElement = document.getElementById('myselectid');
selectElement.textContent = '';
我测试过,两者都可以在Chrome上运行。 我喜欢简单的,老式的方法#1。
这是最好的方法:
function (comboBox) {
while (comboBox.options.length > 0) {
comboBox.remove(0);
}
}
对于Vanilla JavaScript,有一种简单而优雅的方法来做到这一点:
for(var o of document.querySelectorAll('#DropList > option')) {
o.remove()
}
最简单的解决方案是最好的,所以你只需要:
var list = document.getElementById('list'); while (list.firstChild) { list.removeChild (list.firstChild); } <选择id = "列表" > <选项值= " 0 " > 0 < /选项> <选项值= " 1 " > 1 > < /选项 < /选择>
var select = document.getElementById("DropList");
var length = select.options.length;
for (i = 0; i < length; i++) {
select.options[i].remove();
}
希望,这段代码能帮到你