代码如下
 <table>  
        <tr>  
            <td>  
                <select name="comleft" id="comleft" size="5" multiple="true">  
                    <option value="1" selected>员工1</option>  
                    <option value="2">员工2</option>  
                    <option value="3">员工vip</option>
  <option value="4">员工3</option>
  <option value="5">员工4</option>
  <option value="6">员工5</option>
  <option value="7">员工6</option>
                </select>  
            </td>  
            <td align="center">  
                <input type="button" value=" >> "  
                    onclick="moveMuti();" />  
                <br/>  
                <input type="button" value=" << "    
                    onclick="moveMuti(document.getElementById('comright'), document.getElementById('comleft'));" />
                <br/>
              </td>  
            <td>  
                <select name="comright" id="comright" multiple="true" size="5">  
                    
                </select>  
            </td>  
        </tr>  
    </table> 
 </BODY>
  <script language="javascript">  
    <!--       function moveMuti(){   
        var options = document.getElementById('comleft').options;
var _options = document.getElementById('comright').options;
var flag = false;
        for(var i = 0; i < options.length; i++){   
            if(options[i].selected){   
                if(options[i].value=="3") {
flag = true;
}
document.getElementById('comright').appendChild(options[i]);
                i -= 1;   

            }
        } if(!flag) {
_options.selectedIndex = -1;
}

if(_options[_options.length-1].value=="3"){
//如果是vip,置顶
moveTop();
        }


    }    function  moveTop() {
//alert(123);

var topright = document.getElementById('comright');

            var  _opts = [];    
            for(var i =topright.options.length -1 ; i >= 0; i--)   
            {   
                if(topright.options[i].selected)   
                {    _opts.push(topright.options[i]); 
var bac;
                    topright.remove(i);   
                }   
            }   
            var index = 0 ;   
            for(var t = _opts.length-1 ; t>=0 ; t--)   
            {   
                var opt = new Option(_opts[t].text,_opts[t].value);   
                opt.selected = true;   
                topright.options.add(opt, index++);   
            }

    } 
    //-->  
    </script> 代码是这样的,把左边的多选框的内容移到右边的多选框,如果移到的是VIP,则VIP到了右边后置顶。
代码在FF下是没问题的。
在IE下运行,如果移到VIP则报“无效索引”的错误提示。
在Ediplus下运行,如果移到VIP则报“未指明的错误”。
更奇怪的是如果把 function  moveTop() 的第一行注释放开 alert一下,就IE下也正常了。
大侠们帮帮看看。

解决方案 »

  1.   


    var topright = document.getElementById('comright'); 
    topright.focus();我也碰到过,但我有时测试几次就过去了。
    你加上一句就可以过去了,具体原因我也搞不清。
      

  2.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD> <BODY>
      <table>  
            <tr>  
                <td>  
                    <select name="comleft" id="comleft" size="5" multiple="true">  
                        <option value="1" selected>?工1 </option>  
                        <option value="2">?工2 </option>  
                        <option value="3">?工vip </option> 
      <option value="4">?工3 </option> 
      <option value="5">?工4 </option> 
      <option value="6">?工5 </option> 
      <option value="7">?工6 </option> 
                    </select>  
                </td>  
                <td align="center">  
                    <input type="button" value=" >> "  
                        onclick="moveMuti();" />  
                    <br/>  
                    <input type="button" value=" < < "    
                        onclick="moveMuti(document.getElementById('comright'), document.getElementById('comleft'));" /> 
                    <br/> 
                  </td>  
                <td>  
                    <select name="comright" id="comright" multiple="true" size="5">  
                        
                    </select>  
                </td>  
            </tr>  
        </table> 
    </BODY> 
      <script language="javascript">  
        <!--      function moveMuti(){  
            var options1 = document.getElementById('comleft').options; 
    var _options = document.getElementById('comright').options; 
    var flag = false; 
            for(var i = 0; i < options1.length -1; i++){  
                if(options1[i].selected){  
                    if(options1[i].value=="3") { 
    var opt = new Option(options1[i].text,options1[i].value)
    document.getElementById('comright').options.add(opt,0); 
    options1.remove(options1[i])
    }
    else{
    document.getElementById('comright').appendChild(options1[i]); 
    }
    }



        //-->  
        </script>
     </BODY>
    </HTML>
      

  3.   

    是哦,加了个focus就行了 ,原来alert是focus了。2楼的方法也行,不过你把我代码简化后多了好多bug
      

  4.   

    随便加操作小心浏览器版本不同出错哦。BUG自己改下吧,顺便给点分?下载点东西看么。。