请问下拉列表选项开溜的问题? 第一段代码: 
<form name="reg"> 
<select name="fd"></select> 
</form> 
<script language="javascript"> 
document.reg.fd.length=0; 
var option1=new Option("123"); 
document.reg.fd.options[document.reg.fd.length]=option1; 
var option2=new Option("456"); 
document.reg.fd.options[document.reg.fd.length]=option2; 
var option3=new Option("789"); 
document.reg.fd.options[document.reg.fd.length]=option3; function kk(cs) 

if (cs==1); 

document.reg.fd.length=0; 
var option1=new Option("aaa"); 
document.reg.fd.options[document.reg.fd.length]=option1; 
var option2=new Option("bbb"); 
document.reg.fd.options[document.reg.fd.length]=option2; 


</script> 
<button name="b1" onclick="kk(1)">button</button> 
--------------------------------------------------------------------------------------------- 
--------------------------------------------------------------------------------------------- 第二段代码: 
<form name="reg"> 
<select name="fd"></select> 
</form> 
<script language="javascript"> 
<!-- 
var option1=new Option("123"); 
document.reg.fd.options[0]=option1; 
var option2=new Option("456"); 
document.reg.fd.options[1]=option2; 
var option3=new Option("789"); 
document.reg.fd.options[2]=option3; function kk(cs) 

if (cs==1); 

var option1=new Option("aaa"); 
document.reg.fd.options[0]=option1; 
var option2=new Option("bbb"); 
document.reg.fd.options[1]=option2; 


--> 
</script> 
<button name="b1" onclick="kk(1)">button</button> 
---------------------------------------------------------------------------------------------- 
第一段代码中,第一次生成了123,456,789三个选项, 
理解为分别对应option[0],option[1],option[2]这三个元素. 
然后调用过程kk(cs)对第一次生成的代码进行覆盖,覆盖第一个选项成aaa,覆盖第二个选项成bbb, 
问题是我只覆盖(123和456)成aaa和bbb,并没有覆盖789,为什么覆盖后只显示aaa和bbb,而没覆盖的789跑哪去了? ******************************************************* 
第二段代码中,第一次生成了123,456,789三个选项, 
对应着option[0],option[1],option[2]这三个元素. 
然后我调用过程kk(cs)对第一次生成的选项进行覆盖,覆盖第一个选项成aaa,覆盖第二个选项成bbb, 
我只覆盖(123和456)成aaa和bbb,没有覆盖789,显示出来后是aaa,bbb,789三个选项,这个789是第一次生成的第三个元素值 
这里没有对第三个元素值进行覆盖,所以显示出来的可以保留第三个元素的值789. 问题是为什么在第一段代码中我调用过程,只覆盖123和456并没覆盖789,为什么显示出来的只有aaa和bbb,而789开溜了? 第二段代码789就不会开溜.

解决方案 »

  1.   


    第一段中对下拉框长度重新定义了(下拉框长度是可以set的)
    //document.reg.fd.length=0;
    重新定义后就没有第三个 789 选项了!可以改成如下:document.reg.fd.length=0;
    var option1=new Option("123");
    document.reg.fd.options[document.reg.fd.length]=option1;
    var option2=new Option("456");
    document.reg.fd.options[document.reg.fd.length]=option2;
    var option3=new Option("789");
    document.reg.fd.options[document.reg.fd.length]=option3;function kk(cs)
    {
    if (cs==1);
    {
    //document.reg.fd.length=0;
    var option1=new Option("aaa");
    document.reg.fd.options[0]=option1;
    var option2=new Option("bbb");
    document.reg.fd.options[1]=option2;
    }
    }
    第二段则没有重新定义只是覆盖了。
      

  2.   

    length=0把数组删除了,删得一干二净