木是这么个回事,你不应该用add方法去一个一个的把option加入到select组中,而是应该用生成HTML字符串的方法,一次性的赋值,那样只需要一次绘制,效率会N高...

解决方案 »

  1.   

    var slt = "<select name='slt'>";for(var i=0;i<100000;i++){
      slt += "<option value='"+i+"'>"+i+"</option>";
    }slt +="</select>";document.all.obj.innerHTML = slt;举例说就这样,速度会快很多很多...
      

  2.   

    可是我的程序不是在页面一次性load的时候才载入,得在客户端接受用户操作再做出相应操作的
      

  3.   

    用 To.add(oItem);方法 这步的时候就在刷新,你用innerHTML一次性生成就可以
    不过 4000条数据还是太多了
      

  4.   

    谁帮我改进一下下面的代码,提高运行速度,100分全给他<meta content="False" name="vs_snapToGrid">
    <meta content="False" name="vs_showGrid">
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"><script language="JavaScript">
    //==================================================================
    function btnMoveTo_onclick(From, To)//From,To都为<select>的ID号
    {
    var i;
    var oItem;
    var sel = false;

    for(i=0;i< From.options.length;i++)
    {
    oItem = From.options( i );
    if (oItem.selected)
    {
    sel = true;
    oItem=document.createElement("OPTION");
    oItem.value = From.options(i).value;
    oItem.text = From.options(i).text;

    To.add(oItem);
    From.options[i] = null;
    i--;
    }
    }
    if (sel == false)
    {
    alert ('你还没有选择任何项目');
    }
    }
    //==================================================================
    function btnMoveAll_onclick(From, To)//From,To都为<select>的ID号
    {
    for(i=0;i< From.options.length;i++)
    {
    oItem=document.createElement("OPTION");
    oItem.value = From.options(i).value;
    oItem.text = From.options(i).text;

    To.add(oItem);
    From.options[i] = null;
    i--;
    }
    }function onload_click()
    {
    var i;
    for(i=0;i<4000;i++)
    {
    oItem=document.createElement("OPTION");
    oItem.value = "1234";
    oItem.text = "1234";

    TelFrom.add(oItem);
    }
    }
    //==================================================================
    </script>
    </HEAD>
    <body  LANGUAGE="javascript" onload="onload_click()">
    <P><FONT face="宋体"></FONT>&nbsp;</P>
    <table height="150" width="400" border="0">
    <tr hight="20"><td align="center">待选</td><td></td><td align="center">已选</td></tr>
    <tr  hight="130">
    <td width="185"><font face="宋体"><select id="TelFrom" style="width:150;font-size:9pt" multiple size="9"></select>
    </font>
    </td>
    <td width="30">
    <table width="30" border="0">
    <tr>
    <td width="30"><input id="Button1" onclick="javascript:btnMoveTo_onclick(TelFrom,TelTo)" type="button"
    value=" > " name="Button1"></td>
    </tr>
    <tr>
    <td width="30"><input id="Button2" onclick="javascript:btnMoveAll_onclick(TelFrom,TelTo)" type="button"
    value="全选" name="Button2"></td>
    </tr>
    <tr>
    <td width="30"><input id="Button3" onclick="javascript:btnMoveTo_onclick(TelTo,TelFrom)" type="button"
    value=" < " name="Button3"></td>
    </tr>
    <tr>
    <td width="30"><input id="Button4" onclick="javascript:btnMoveAll_onclick(TelTo,TelFrom)" type="button"
    value="全删" name="Button4"></td>
    </tr>
    </table>
    </td>
    <td width="185"><select id="TelTo" style="width:150;font-size:9pt" multiple size="9" name="TelTo"></select></td>
    </tr>
    </table>
    </form>
    </body>
    </HTML>
      

  5.   

    我不干了,你自己用生成HTML字符串的方式来做,你那测试起来急死人..哈哈...
      

  6.   

    我不知道你说的生成HTML字符串如何做成动态的
      

  7.   

    try
    --------------------
    function btnMoveAll_onclick(From, To)//From,To都为<select>的ID号
    {
      var htmlStr = ""
      for(i=0;i< From.options.length;i++)
      {
        htmlStr += "<option value='" + From.options(i).value +"'>"+ From.options(i).text +"</option>"
        From.options[i] = null;
        i--;
      }
      To.insertAdjacentHTML("beforeEnd", htmlStr)
    }function onload_click()
    {
      var i;
      var html2add = ""
      for(i=0;i<4000;i++)
      {
        html2add += '<option value="'+i+'">'+i+'</option>' 
      }
      mySelectObj.insertAdjacentHTML("beforeEnd", html2add)
    }
      

  8.   

    上面的好像不行
    ------------------
    function onload_click()
    {
      var i;
      var html2add = ""
      for(i=0;i<4000;i++)
      {
        html2add += '<option value="'+i+'">'+i+'</option>' 
      }
      TelFrom.outerHTML = TelFrom.outerHTML.replace(/<\/select>/i,"")+html2add+"</select>"
    }
      

  9.   

    xjdawu(无法界定)老兄,你这方法好象不行呀?
    我把mySelectObj改成TelFrom不会报错,但可选项里都出不来东西,好象是TelFrom.insertAdjacentHTML("beforeEnd", html2add)这一句没起到作用