我的代码可以在IE中运行,但在Safari、Firefox和Opera中会崩溃。(惊喜)

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

经过搜索,我了解到它不喜欢的是长度=0。 我试过了……选项=null和var clear=0...长度=clear,结果相同。

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


当前回答

今天我也遇到了同样的问题,我在重新加载选择框时做了如下操作。(在纯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);

        }

其他回答

function removeOptions(obj) {
    while (obj.options.length) {
        obj.remove(0);
    }
}

可以使用以下命令清除所有元素。

var select = document.getElementById("DropList");
var length = select.options.length;
for (i = length-1; i >= 0; i--) {
  select.options[i] = null;
}
for (var opt of document.querySelectorAll('#DropList option'))
{ 
  opt.remove();
}

这个解决方案也适用于optgroups。

今天我也遇到了同样的问题,我在重新加载选择框时做了如下操作。(在纯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);

        }

对于Vanilla JavaScript,有一种简单而优雅的方法来做到这一点:

for(var o of document.querySelectorAll('#DropList > option')) {
  o.remove()
}