5

作为填充选择框功能的一部分,我将清除填充选择框的内容,然后将选项插入一个空框。虽然选择框没有被正确清除并且很多选项没有被删除。我正在使用以下代码来清除选择框的内容:

for(var i = 0; i < document.getElementById(selectbox).options.length; i++)
    document.getElementById(selectbox).options[i] = null;

为什么不从选择框中删除所有选项?

4

4 回答 4

15

你可以简单地做

 document.getElementById(selectbox).options.length = 0;

您也可以像您所做的那样一个一个地删除元素,但是您必须考虑options迭代时更改的长度这一事实。迭代时删除的正确方法是

for (var i=document.getElementById(selectbox).options.length; i-->0;)
    document.getElementById(selectbox).options[i] = null;

但是第一个解决方案当然更简单。

于 2012-11-26T15:48:03.917 回答
1
var selectbox = document.getElementById(selectbox);

document.getElementById("emptyBox").innerHTML = selectbox.innerHTML;
selectbox.innerHTML = "";
于 2012-11-26T15:54:50.327 回答
1

作为清除选择列表的所有选项的另一种更简洁的方法,我们可以利用 JavaScript 的错误值零,然后简单地从 Dom 中删除该选项:

function clearSelectList(list) {
    // when length is 0, the evaluation will return false.
    while (list.options.length) {
        // continue to remove the first option until no options remain.
        list.remove(0);
    }
}

用法将是:

var list = document.getElementById("selectbox");
clearSelectList(list);

或者更简洁地说:

clearSelectList(document.getElementById("selectbox"));
于 2016-08-20T00:59:08.140 回答
0

此示例使用新一代 JavaScript。我建议使用。

[...cbrCenterSelectbox.options].forEach(option => option.remove())
于 2020-02-17T14:10:15.593 回答