我想用js创建一个下拉框,
代码如下:
var select1 = document.createElement("select");
select1.options[0] = new Option("11","aa");
select1.options[1] = new Option("22","bb");
document.body.appendChild(select1);
这样子是可以的;为什么这样子就不可以了:var select1 = document.createElement("select");
var op1 = document.createElement("option");
op1.id="11";
op1.innerHTML="aa";
var op2 = document.createElement("option");
op2.id="22";
op2.innerHTML="bb";
select1.options[0] = op1;//这里会报错,说不支持的对象或属性
select1.options[1] = op2;//这里会报错,说不支持的对象或属性document.body.appendChild(select1);以下这2种写法返回的对象不是一样的吗,为什么前一种就会报错呢
var op1 = document.createElement("option");
op1.id="11";
op1.innerHTML="aa";
var op1 = new Option("11","aa");请大家解答下,谢谢了

解决方案 »

  1.   

    第一种是Option对象,第二种是HTML对象
      

  2.   

    select1.add(op2)或试试
    select1.add(new Option("1", "文本"));
      

  3.   

    要保持用法的一致性.好好体会一下:
    <body>
    <SCRIPT language=JavaScript>
    <!--var select1 = document.createElement("select");
    select1.options[0] = new Option("11","aa");
    select1.options[1] = new Option("22","bb");
    document.body.appendChild(select1);var select2 = document.createElement("select");
    var op1 = document.createElement("option");
    op1.id="11";
    op1.innerHTML="aa";
    var op2 = document.createElement("option");
    op2.id="22";
    op2.innerHTML="bb";
    select2.appendChild(op1);
    select2.appendChild(op2);
    document.body.appendChild(select2);
    //-->
    </SCRIPT>
      

  4.   

    因为你的option虽然创建了,但是没有添加到DOM树中来,添加到DOM树是没办法通过select1.options[0] = op1这样的操作来实现饿,这仅仅是添加了一个引用关系而已,添加到DOM树的话,你需要把select1.appendChild(op1)等类似的方式
      

  5.   

    select.options.add(new Option(value,text))