刚刚又测试了一下,如果不用document.createElement("OPTION");
而用new Option
就可以实现这个目的,不过还是想知道为什么
document.createElement("OPTION");就不能在添加后直接赋值呢?

解决方案 »

  1.   

    果然可以,汗一个,那为什么下面2种作法不可以呢?
    obj.value = 4;
    obj.selectedIndex = 4;
      

  2.   

    obj指的是select obj.value 他的值是12345..
    selectedIndex的值也是12345..
    这是选择之前就有的
    跟选择动作无关
      

  3.   

    用IE确实是报错了,之前用的TheWorld,所以没看到错误
    但是奇怪的是,报错后,值还是变过来了。
      

  4.   

    刚刚试了一下,这几种都可以的,而且我看不到状态栏有错误
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <script language="javascript"> 
        function InsertOpn(){
            var obj = document.getElementById("s1");
            // 清空下拉框
            while(obj.options.length > 0)
                obj.options.remove(0);
            for(var i = 0; i < 10; i++){
                var opn = document.createElement("OPTION");
                opn.innerText = "option" + i;
                opn.value = i;
                obj.appendChild(opn);
            }
            
            //obj.value = 4;  // 直接赋值,不能实现目的
    obj.options[2].selected=true;
    alert(obj.selectedIndex);
    obj.selectedIndex =5;
    alert(obj.selectedIndex);
    obj.options.selectedIndex =4;
    alert(obj.selectedIndex);
        }
        
    </script> 
    </head> 
    <body> 
    <form name="Form1" method="post" action="test4.asp">
        <input type="button" name="a1" onclick="InsertOpn();" value="初始化下拉框">
        <input type="button" name="a1" onclick="alert(document.getElementById('s1').selectedIndex);" value="显示下拉框的值">
        <br>
        <select name="s1" id="s1"> 
        </select>
    </form>
    </body> 
    </html>
      

  5.   

    楼上用的是IE7吧,我用的是IE6
    会报错。
      

  6.   

    无法设置 selected 属性。无效索引
      

  7.   

    http://topic.csdn.net/u/20080429/10/ffb20da2-59dc-4f32-9aa0-61b514c9c6fd.html
      

  8.   

    谢谢楼上的,我已经说了:
    使用new Option可以解决问题,只是我觉得很奇怪,为什么使用
    document.createElement("OPTION")
    就必须延迟一段时间才可以使用。
      

  9.   

    不清楚,呵呵,我这边没有IE6可以测试.你再试一下这个可不可以吧,这个我用的不多.
    obj.options[3].setAttribute("selected",true);