<html>
<script language="javascript">
//document.onreadystatechange = init;
function del() {
var benefitModeObj = document.forms[0].benefitMode;
if(benefitModeObj != null){
//这种方法是不正确的
//for(var i = 1;i < benefitModeObj.options.length+1;i++){
// alert(i+"====="+benefitModeObj.options[i].text);
// alert(i+"====="+benefitModeObj.options.length);
// benefitModeObj.remove(i);
//}
//只保留“法定”
for(var i = benefitModeObj.options.length - 1;i>0;i--){
alert(i+"====="+benefitModeObj.options[i].text);
benefitModeObj.remove(i);
alert(i+"====="+benefitModeObj.options.length);
}
}
}
</script>
<body>
<form >
XX方式:<select name="benefitMode" οnchange="javascript:void(0);">
<option value="1">法定</option>
<option value="2">均分</option>
<option value="3">顺位</option>
<option value="4">比例</option>
</select>
</form>
<input type="button" value="删除只保留法定" οnclick="del();"/>
</body>
</html>
若采用第一种方法删去,发现并不能达到删去除了法定之外的其他三项,是由于benefitModeObj.options.length是
随着下拉框选项的删除而变化(减少)的,所以才会产生这种错误的情况。
for(var i = 1;i < benefitModeObj.options.length+1;i++){
alert(i+"====="+benefitModeObj.options[i].text);
alert(i+"====="+benefitModeObj.options.length);
benefitModeObj.remove(i);
}
由于是从0开始的,这样不管benefitModeObj.options.length是怎么变化,都是删除最后一个。
for(var i = benefitModeObj.options.length - 1;i>0;i--){
alert(i+"====="+benefitModeObj.options[i].text);
benefitModeObj.remove(i);
alert(i+"====="+benefitModeObj.options.length);
}