我的代码可以在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代码。
当前回答
这可以用来清除选项:
功能clearDropDown () { var选择=文档。getElementById(“DropList”), 选择。 当(长度正好…){ 选择。移除(长度正好); 的 的 <选择id=“DropList”> <选项> option_1 < /选项> <选项> option_2 < /选项> <选项> option_3 < /选项> <选项> option_4 < /选项> <选项> option_5 < /选项> 选择< - > <按钮onclick =“clearDropDown ()> revival巴顿list < - >
其他回答
使用JQuery是一种更漂亮、更短、更聪明的方法!
$('#selection_box_id').empty();
如果你必须支持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秒钟,这样我就可以用新内容更新它。这样做几乎是瞬间的事。
如果您希望使用轻量级脚本,那么请使用jQuery。 在jQuery中,删除所有选项的解决方案如下:
$("#droplist").empty();
项目应该反向删除,否则将导致错误。此外,我不建议简单地将值设置为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");
今天我也遇到了同样的问题,我在重新加载选择框时做了如下操作。(在纯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);
}