我有一个包含多个HTML Select控件的网页,这些控件都允许多个选择。在每个控件旁边,我们有一个“清除”按钮,可以取消选择控件中的所有选定项目,其中onclick看起来像这样:
<input type=button value="Clear" size=5 onclick="selectOptions('n.MyControl', false)">
调用的Javascript代码如下所示:
function selectOptions(controlName, bSelectItems)
{
for (i=0; i < document.myForm[controlName].options.length; i++)
{
document.myForm[controlName].options[i].selected = bSelectItems;
}
}
它适用于允许多项选择的Select控件,但我刚刚添加了一个不允许多项选择的Select控件(即没有“multiple”属性),并且此代码不会清除它。如果我添加“multiple”属性,Clear按钮会再次开始工作,所以我知道它与我不允许选择多个项目这一事实有关。
我的问题是,为什么上面的代码不起作用,更重要的是,如何在JavaScript中清除我的新Select控件?
答案 0 :(得分:4)
你的代码不起作用的原因是因为你试图迭代每个选项并做一些事情,但是因为(就像你说的那样)没有设置多个属性,所以它不允许你修改多个选项。
至于修复它,您可以尝试获取所选选项,然后取消选择该单个选项。
<强>更新强> 我不确定这是否是理想的解决方案,但在IE8中似乎对我有用。
document.getElementById('myselect').selectedIndex = -1;
当然,您可以获得最适合您的select
元素,但只需将selectedIndex
属性设置为-1
。
答案 1 :(得分:1)
没有清除单个<select>
框这样的东西。只要选择中有任何选项,一个选项将始终被选中。如果没有选项在第一次加载时设置selected
,则第一个选项将自动被选中。
通常的方法是将第一个选项作为虚拟选项(如<option value="">(Please select a thing)</option>
),并重置为该选项(使用select.selectedIndex= 0
)。