我有一个带有几个HTML选择控件的网页,这些控件都允许多个选择。在每个控件旁边,我们有一个"Clear“按钮,可以取消选中控件中的所有选中项,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中清除我的新选择控件?
发布于 2010-09-21 17:28:44
代码不能工作的原因是因为您试图迭代每个选项并执行某些操作,但是由于(如您所说)未设置属性,因此它不允许您修改多个选项。
至于修复它,您可以尝试获取所选的选项,然后取消选择该单个选项。
更新:我不确定这是不是最理想的解决方案,但在IE8中它似乎很适合我。
document.getElementById('myselect').selectedIndex = -1;
当然,无论哪种方式最适合您,您都可以获取select
元素,但只需将selectedIndex
属性设置为-1
即可。
发布于 2010-09-21 17:42:48
没有清空的单<select>
盒子这回事。只要select中有任何选项,就会始终选择一个选项。如果在第一次加载时没有设置selected
的选项,则会自动选择第一个选项。
通常的方法是将第一个选项作为虚拟选项(如<option value="">(Please select a thing)</option>
),然后重置为该选项(使用select.selectedIndex= 0
)。
https://stackoverflow.com/questions/3762766
复制相似问题