还是关于级连下拉框的问题
function Init(num){
var i,j,arrTemp=[];
for(i=0;i<num;i++)arrTemp[i]=document.all(arrSel[i]).options[document.all(arrSel[i]).selectedIndex].text
if(num==arrSel.length) return;
with(document.all(arrSel[num])){
length=0;
for(i=0;i<dptName.length;i++){
for(j=0;j<num;j++)if(arrTemp[j]!=dptName[i][j])break;
if(j!=num)continue;
if(length==0||options[length-1].text!=dptName[i][num]){
>> options[length++].text=dptName[i][num];
}
}
onchange=new Function("Init("+(num+1)+")");
onchange();
}
}
当我把上述代码中标有>>的行替换为
options[length].text=dptName[i][num];
length++;
时,下拉框的下拉内容为空。
上帝救救我吧,看看到底是怎样一回事。
嗯,有点意思。
length++其实也就是document.all(arrSel[num]).length++,这个操作本身先修改了select的属性使它添加了一个元素,然后再返回原来修改前的length值给你。试试:
<select id=s></select>
<SCRIPT LANGUAGE="JavaScript">
<!--
s[s.length++].text="aa"
//-->
</SCRIPT>
等效的写法是:
<select id=s></select>
<SCRIPT LANGUAGE="JavaScript">
<!--
s.length++;
s[s.length-1].text="aa"
//-->
</SCRIPT>