我的代码可以在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代码。
可以使用以下命令清除所有元素。
var select = document.getElementById("DropList");
var length = select.options.length;
for (i = length-1; i >= 0; i--) {
select.options[i] = null;
}
要删除select的HTML元素的选项,可以使用remove()方法:
function removeOptions(selectElement) {
var i, L = selectElement.options.length - 1;
for(i = L; i >= 0; i--) {
selectElement.remove(i);
}
}
// using the function:
removeOptions(document.getElementById('DropList'));
重要的是要将选项向后移除;当remove()方法重新排列选项集合时。这样,就保证了要删除的元素仍然存在!
Try
document.getElementsByTagName("Option").length=0
或者可以查看removeChild()函数。
或者如果你使用jQuery框架。
$("DropList Option").each(function(){$(this).remove();});
这是最好的方法:
function (comboBox) {
while (comboBox.options.length > 0) {
comboBox.remove(0);
}
}
也许,这不是最干净的解决方案,但绝对比一个一个地移除简单:
document.getElementById("DropList").innerHTML = "";
while(document.getElementById("DropList").childNodes.length>0)
{
document.getElementById("DropList").removeChild(document.getElementById("DropList").childNodes[0]);
}
var select = document.getElementById('/*id attribute of your select here*/');
for (var option in select){
select.remove(option);
}
如果你必须支持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秒钟,这样我就可以用新内容更新它。这样做几乎是瞬间的事。
去扭转。原因是每次移除后尺寸都会减小。
for (i = (len-1); i > -1; i--) {
document.getElementById("elementId").remove(i);
}
如果你正在使用JQuery,并且你的选择控件的ID为“DropList”,你可以这样删除它的选项:
$('#DropList option').remove();
实际上,它适用于任何选项列表,如数据列表。
希望能有所帮助。
以上答案的代码需要轻微更改以删除列表完整,请检查这段代码。
var select = document.getElementById("DropList");
var length = select.options.length;
for (i = 0; i < length;) {
select.options[i] = null;
length = select.options.length;
}
刷新长度,它将从下拉列表中删除所有数据。 希望这能帮助到一些人。
注意,一个选择可以同时具有这两种情况 - optgroup & -选项集合 就像它的孩子一样。
So,
方法# 1
var selectElement = document.getElementById('myselectid');
selectElement.innerHTML = '';
方法# 2
var selectElement = document.getElementById('myselectid');
selectElement.textContent = '';
我测试过,两者都可以在Chrome上运行。 我喜欢简单的,老式的方法#1。
这可以用来清除选项:
功能clearDropDown () { var选择=文档。getElementById(“DropList”), 选择。 当(长度正好…){ 选择。移除(长度正好); 的 的 <选择id=“DropList”> <选项> option_1 < /选项> <选项> option_2 < /选项> <选项> option_3 < /选项> <选项> option_4 < /选项> <选项> option_5 < /选项> 选择< - > <按钮onclick =“clearDropDown ()> revival巴顿list < - >
最简单的解决方案是最好的,所以你只需要:
var list = document.getElementById('list'); while (list.firstChild) { list.removeChild (list.firstChild); } <选择id = "列表" > <选项值= " 0 " > 0 < /选项> <选项值= " 1 " > 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);
}
这是一条很短的路:
document.getElementById('mySelect').innerText = null;
一行,没有for,没有JQuery,很简单。
项目应该反向删除,否则将导致错误。此外,我不建议简单地将值设置为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");
这是一种现代的纯JavaScript
document.querySelectorAll('#selectId option').forEach(option => option.remove())
我想指出的是,最初问题中的问题在今天已经没有意义了。还有一个更简短的解决方案:
selectElement.length = 0;
我测试过,这两个版本都可以在Firefox 52、Chrome 49、Opera 36、Safari 5.1、IE 11、Edge 18、最新版本的Chrome、Firefox、三星互联网和UC浏览器(Android)、Safari (iPhone 6S)和Android 4.2.2常规浏览器上运行。我认为可以肯定地说,它与目前的任何设备都是完全兼容的,所以我推荐这种方法。
var select = document.getElementById("DropList");
var length = select.options.length;
for (i = 0; i < length; i++) {
select.options[i].remove();
}
希望,这段代码能帮到你
对于Vanilla JavaScript,有一种简单而优雅的方法来做到这一点:
for(var o of document.querySelectorAll('#DropList > option')) {
o.remove()
}
for (var opt of document.querySelectorAll('#DropList option'))
{
opt.remove();
}
这个解决方案也适用于optgroups。