6000多个?晕,要那么多checkbox干吗!

解决方案 »

  1.   

    to  ziyantan(gdsspt.com)
    何谓"都放在客户端生成"?
    是把数据全部读取出来放在客户端,如赋给一数组,然后生成checkbox组?
    问题是如果不用
    a.asp
    _____
    <%
    dim strstr
    strstr = request("checkbox1")
    %>
    alert("<%=strstr%>");
    这样的方法,而是在客户端用javascript循环读取checkbox组,选出选中的checkbox时,会非常慢.....
      

  2.   

    改成这样,
    全部没选的情况下,速度会快一百倍左右,
    另:如果选中很多还是会导致有些慢的话,就不要用str+=这种方式来组合字符串function Button1_onclick() {
    var d1=new Date();
    var strResult;
    strResult = '';
    var checkboxObjs=framep3.document.forms[0].elements;
    var elelen=checkboxObjs.length;

    for(var i=0;i<elelen;i++)
    {
    if(checkboxObjs[i].checked)
    {
    strResult = strResult + ','+checkboxObjs[i].value;
    }
    }

    alert(strResult);
    //window.close();}
      

  3.   

    to  JK_10000(JK)
    这种方法我试过的,就是当用户把以前选中的checkbox改为不选时,就要从strResult中删除掉以前选的checkbox的value,这样的话效率虽然不是几高,不过对比循环checkbox组来说,还是可以的
      

  4.   

    “这种方法我试过的”你所说的“这种方法”是什么方法
    是指我给你的代码吗?
    我给你的代码并没有改变你的思路,只是把循环里每次都要取的
    framep3.document.forms[0].elements
    先提出来,
    即:var checkboxObjs=framep3.document.forms[0].elements;
    所以会提高效率。我没有“就是当用户把以前选中的checkbox改为不选时,就要从strResult中删除掉以前选的checkbox的value”这样的想法。不清楚你为什么这么想。
      

  5.   

    sorry.是我看错了,不好意思。
    刚才试过,当用户选取不多时
    效率可以。哈,原来是var checkboxObjs=framep3.document.forms[0].elements;
    这个原因
    非常感谢!!!其实我是说另一种方法,是即时响应checkbox的选取,把选取的value合成一字符串,如果在选的过程中用户取消了前面选取的checkbox,就要从字符串中把那个value删掉,这样来达到目的,不过这样的效率好像也不是很好
      

  6.   

    我所想说的:“选择很多时,不用str+=的方式”的组合字符串的方式:function Button1_onclick() {
    var d1=new Date();
    var strResult="";
    var checkboxValues=new Array();
    var tempLength=0;
    var checkboxObjs=framep3.document.forms[0].elements;
    var elelen=checkboxObjs.length;

    for(var i=0;i<elelen;i++)
    {
    if(checkboxObjs[i].checked)
    {
    checkboxValues[tempLength++]=checkboxObjs[i].value;
    }
    }
    alert(new Date()-d1);
    strResult=checkboxValues.join(",");
    alert(strResult);
    //window.close();}