【发布时间】:2013-12-18 18:20:16
【问题描述】:
我有一个使用 javascript 和 html 生成的下拉菜单。我有一些代码将在下面发布,这些代码循环遍历此列表,并且可能会删除找到但不起作用的任何空白行。 "$maxfield1rows" 的值为 7,我的意思是如果该值为空白 (==''),则将其删除。我使用了 removeChild 但这似乎不起作用,我也尝试过拼接,我认为过滤器可以工作但不确定。我尝试了 disabled=true 但这只会使它们被禁用且无法选择。有人可以帮忙吗?
for(index=1; index<$maxfield1rows; index++) {
if(document.pickDivision.field1.options[index].value=='') {
document.pickDivision.field1.removeChild(document.pickDivision.field1.options[index]);
}
}
在下面更新,我使用 $maxfield1rows 因为这是循环通过的最大行数,也通过更改我的意思是当用户选择不同的选项时触发 onchange 事件下拉菜单,因此根据选择的选项,field1 的输出会发生变化,有时会显示 5 个值,有时只有 1 个:
for(index=$maxfield1rows-1; index>=0; index--) {
alert(document.pickDivision.field1.options[index]);
if(document.pickDivision.field1.options[index].value==''){
document.pickDivision.field1.removeChild(document.pickDivision.field1.options[index]);
document.pickDivision.field1.options[index].disabled=true;
}
else{
document.pickDivision.field1.options[index].disabled=false;
}
}
【问题讨论】:
-
如果你做一个
console.log('a' + document.pickDivision.field1.options[index].value + 'b'),a和b之间是有空格还是没有空格? -
此外,通过选项数组向前循环并删除项目会导致某些(如果不是全部)浏览器出现问题。当该项目被删除时,它实际上是从
options集合中删除的。这将导致您的下一个项目不在同一索引位置。 -
a和b之间没有空格
标签: javascript html loops filter null