http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=52448

解决方案 »

  1.   

    一个select框:  
    <select  name="attachlist"  size=5  multiple  tabindex="4"  style="HEIGHT:  134px;  WIDTH:  228px">  
           <option  value="nOT"></option>                    
    </select>  
     
    效果:  
    有一个按钮,一个文本框,  
    往文本框中输入一些内容,按下按钮,其中的内容就添加到select框中了,可反复操作  
    请指教!!!  
    ---------------------------------------------------------------  
     
    <select  name="attachlist"  size=5  multiple  tabindex="4"  style="HEIGHT:  134px;  WIDTH:  228px">  
           <option  value="nOT"></option>                    
    </select>  
    <input  onclick="attachlist.options[attachlist.options.length]=new  Option('a','a')"  value=add  type=button>  
    ---------------------------------------------------------------  
     
    <script>  
    //  添加选项  
    function  addOption(pos){  
           var  objSelect  =  document.myForm.mySelect;  
           //  取得字段值  
           var  strName  =  document.myForm.myOptionName.value;  
           var  strValue  =  document.myForm.myOptionValue.value;  
           //  建立Option对象  
           var  objOption  =  new  Option(strName,strValue);  
           if  (pos  ==  -1  &  pos  >  objSelect.options.length)    
                 objSelect.options[objSelect.options.length]  =  objOption;  
           else  
                 objSelect.add(objOption,  pos);  
    }  
    //  删除选项  
    function  deleteOption(type){  
               var  objSelect  =  document.myForm.mySelect;  
               if(objSelect.options.length>0){  
               if  (type  ==  true)  
                           objSelect.options[objSelect.selectedIndex]  =  null;  
               else  
               objSelect.remove(objSelect.selectedIndex);  
               }  
               else  
               alert("已经没有选项可以删除了!")  
    }  
    //  显示选项信息  
    function  showOption(objForm){  
           var  objSelect  =  objForm.mySelect;  
               if(objSelect.options.length>0){  
                           document.all.myOptionName.value  =  objSelect.options[objSelect.selectedIndex].text;  
                           document.all.myOptionValue.value  =  objSelect.options[objSelect.selectedIndex].value;  
               }  
               else  
               alert("没有选项可以显示!")  
    }  
    </script>  
    <form  name="myForm">  
    <select  name="mySelect">  
    <option  value="value1"  Selected>HTML</option>  
    <option  value="value2">JavaScript</option>  
    <option  value="value3">VBScript</option>  
    </select>  
    <input  type="button"  onclick="showOption(this.form)"  value="显示">  
    <input  type="button"  onclick="deleteOption(true)"  value="删除">  
    <input  type="button"  onclick="deleteOption(false)"  value="Remove方法"><br><br>  
    选项名称  :  <input  type="text"  name="myOptionName"  value="CSS"><br>  
    选项的值  :  <input  type="text"  name="myOptionValue"  value="value4">  
    <input  type="button"  onclick="addOption(-1)"  value="添加">  
    <input  type="button"  onclick="addOption(0)"  value="插入">  
    </form>  
     
    ---------------------------------------------------------------  
     
    <select  name="attachlist"  size=5  multiple  tabindex="4"  style="HEIGHT:  134px;  WIDTH:  228px"  id=sel>  
           <option  value="nOT">delopt</option>                    
    </select>  
    <input  type=button  onclick=delsel()>  
    <script>  
    function  delsel()  
    {  
       var  index;  
       index=document.all('sel').selectedIndex;  
       document.all('sel').remove(index);  
       }  
    </script>
      

  2.   

    楼主这种情况我也很纳闷???
    实在不行就只能用dom了
      

  3.   

    楼上的两个(实际上是一个)程序是对阿。没错。但是看看我的程序吧,起码看清楚我问的问题吧?var oPopup = window.createPopup();看见没有?老大
      

  4.   

    请问蓝色爱琴海,我知道dom是什么,但没用过,在弹出菜单里怎么用?能不能给个简单的代码,说明怎么用就行了。谢谢!
      

  5.   

    确实window.createPopup有些不方便,比如表单就不能提交,好象input=text还不能输入字符
      

  6.   

    function add(){
    var o=oPopup.document.all['s1'];
    var s = o.outerHTML;
    var option = "<option>222</optopn>"
    s = s.substring(0,s.length-9) + option + "</select>";
    o.outerHTML = s;
    }
      

  7.   

    愿赌服输的办法确实可以。我也试过写outerHTML.我是重写整个outerHTML,不是取子串。但是在我的程序里出现了问题。不是这个测试程序。所以我估计这样的机制可能不行。我现在再试试。
    另外有没其他办法啊?dom怎么用
      

  8.   

    就是:
    var objOp=document.createElement("option");
    oPopup.document.all['s1'].appendChild(objOp);
    你先试试
      

  9.   

    楼主, popup 里不支持脚本的运行, 只能响应事件.
    再修改一下你的ADD函数:
    function add(){
          var o=oPopup.document.all['s1'];
          o.options.length++;
          var op = o.options[o.options.length-1];
          op.text = "222";
          op.value = "222";
          alert(o.innerHTML);
    }
      

  10.   

    meizz(梅花雪 封闭开发中) :[popup 里不支持脚本的运行] 什么意思
    function add(){
        var o=oPopup.document.all['s1'];
        var op = oPopup.document.createElement("OPTION");
        op.value="222";
        op.text = "222";
        o.add(op);
    }
    这样也可以啊
      

  11.   

    popup 里不支持脚本的运行, 只能响应事件:
    To: cloudside(在云的那一方) 你可以写一段最简单的JS语句到popup里, 你看看它能否被执行呢?
    楼主的问题主要是他自己的ADD()函数写得不对. select 不能通过 innerHTML 新加 option
      

  12.   

    我看MSDN建议通过 innerHTML 新加 option,说是这样可以提速,options.add(new Option("aaa", 1)这样我也试过,alert出来也是后半个</option>。
      

  13.   

    搂主,将你的修改一下 o.add(oOption),没问题,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
    <html>
    <head>
    <script type="text/javascript"> var oPopup = window.createPopup();
    oPopup.document.body.style.backgroundColor = '#D4D0C8';
    oPopup.document.body.style.border = '2px outset'; function pop1(){
    oPopup.document.body.innerHTML ="<table><tr><td>下拉:<select id=s1><option>111</option></select></td><td><button onclick=\"parent.add()\">增加一条</button></td></tr></table>";
    oPopup.show(window.event.x,window.event.y+100,200,100);
        } function add(){
    var o=oPopup.document.all['s1'];
    //alert(o.innerHTML);
    //o.innerHTML+="<option>222</option>";
    //alert(o.innerHTML);
    var oOption = oPopup.document.createElement('OPTION');
    oOption.value = "222";
    oOption.text = "222";
    o.add(oOption);
    }
    </script>
    </head>
    <body>
    <table border="1" id="table1">
    <tr>
    <td onclick="pop1()">弹出菜单</td>
    </tr>
    </table>
    </body>
    </html>但是用innerHTML 确实有问题,问题出的很怪。
    s=o.innerHTML;//s=<option selected>111</option>
    s+="<option>222</option>"; //s=<option selected>111</option><option>222</option>
    但是当你执行完
    o.innerHTML=s;之后看一下
    o.innerHTML的值竟然是 111</option><option>222</option>.
    确实很奇怪。
    难道是bug?
      

  14.   

    跟popup没有关系,直接在body里放,添加也是同一情况为什么会截去一段呢?
      

  15.   

    <--------------高手看过来! 能不能搞定这个?
    http://community.csdn.net/Expert/topic/3472/3472337.xml?temp=.1701624
      

  16.   

    上面的程序我都试过了,结果如下:
    --------------------------------
    function add(){
    var o=oPopup.document.all['s1'];
    o.innerHTML+="<option>222</option>";
    //alert(o.innerHTML);
    }
    在body里也不行,popup里也不行。alert出来会截去一段!
    --------------------------------
    function add(){
    var o=oPopup.document.all['s1'];
    var s = o.outerHTML;
    var option = "<option>222</optopn>"
    s = s.substring(0,s.length-9) + option + "</select>";
    o.outerHTML = s;
    }
    在body和popup里都行。
    --------------------------------
    function add(){
          var o=oPopup.document.all['s1'];
          o.options.length++;
          var op = o.options[o.options.length-1];
          op.text = "222";
          op.value = "222";
          alert(o.innerHTML);
    }
    在body和popup里都行。
    ---------------------------------
    function add(){
        var o=oPopup.document.all['s1'];
        var op = oPopup.document.createElement("OPTION");
        op.value="222";
        op.text = "222";
        o.add(op);
    }
    这是用了dom吧?
    在body和popup里都行。
    -------------------------------
    function add(){
        var o=oPopup.document.all['s1'];
        o.options.add(new Option("222",1)); 
    }
    这是我最初出问题的代码。
    在body下是可以的。在pop下不行