2012-11-26 38 views
4

明确的内容,我的选择框填充功能的一部分,我清除填充选择框的内容,然后将选择一个空盒子。尽管选择框未被正确清除,并且许多选项未被删除。我使用下面的代码以清除选择框的内容:的Javascript选择框

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

为什么不能所有的选项都从选择框去掉?

+3

“长度-1”?为什么是-1? –

+0

对不起我的坏。它不应该在那里。 – user197483

+0

SOOO它没有-1工作?如果不是这样,我猜想,是监守的'的document.getElementById(selectbox.options.length'的长度改变,因为你删除它的元素。我不知道这是肯定的,因为我很远从Javascript亲虽然。 – thatidiotguy

回答

9

你可以简单地做

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

你也可以有删除的元素一个接一个,几乎像你这样,但是当你遍历你必须考虑到这样的事实的options的长度发生变化。正确的方法去除,而迭代本来

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

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

+0

你能测试另一个解决方案吗?我确信@thatidiotguy将比我感兴趣的结果 –

+0

另一种解决方案也工作正常。欢呼声。 – user197483

+0

好。谢谢你的测试:) –

0
var selectbox = document.getElementById(selectbox); 

document.getElementById("emptyBox").innerHTML = selectbox.innerHTML; 
selectbox.innerHTML = ""; 
1

作为替代和清除选择列表中的所有选项的更简洁的方法,我们可以采取的零JavaScript的falsey价值的优势,然后简单地从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"));